Я хотел бы написать простой загрузчик Java для моего сайта резервного копирования.
Что важно, апплет должен иметь возможность загружать много файлов одновременно.
Надеюсь, вы имеете в виду последовательно, как написан ваш код. В этой ситуации не было бы никакого преимущества, если бы параллельно запускались несколько потоков загрузки.
Мне кажется, что такой апплет легко взломать или заразить.
Обязательно зашифруйте свой поток связи. Поскольку, похоже, вы просто обращаетесь к URL-адресам на сервере, возможно, настройте сервер на использование HTTPS.
Более того, наверняка понадобится много систем
ресурсы для запуска.
Почему вы так думаете? Пропускная способность сети будет ограничивающим фактором. Вы не будете облагать налогом свои другие ресурсы очень. Возможно, вы хотели избежать насыщения полосы пропускания пользователя. Вы можете реализовать простое регулирование, предоставляя пользователю настраиваемую задержку, которую вы вставляете между каждым файлом или даже каждой итерацией цикла чтения / записи. Используйте Thread.sleep для реализации задержки.
Итак, я подумал об установлении предела для него, но я не
действительно знаю, как решить, сколько файлов одновременно.
Если вы выполняете загрузку последовательно, установка лимитов не является техническим вопросом. Подробнее о том, какие услуги вы хотите предоставить. Больше файлов означает, что загрузка занимает больше времени.
int a = is.read ();
Ваша реализация потокового чтения / записи очень неэффективна. Вы хотите читать / писать порциями, а не отдельными байтами. Смотрите версии методов чтения / записи, которые принимают byte [].
Вот базовый логический поток для копирования данных из входного потока в выходной поток.
InputStream in = null;
OutputStream out = null;
try
{
in = ...
out = ...
final byte[] buf = new byte[ 1024 ];
for( int count = in.read( buf ); count != -1; count = in.read( buf ) )
{
out.write( buf, 0, count );
}
}
finally
{
if( in != null )
{
in.close();
}
if( out != null )
{
out.close();
}
}