Решено
Оказалось, я неправильно понял, что на самом деле делает метод available (), поэтому я просто изменил код, который записал данные в это:
int b = input.read();
while (b != -1) {
output.write(b);
b = input.read();
}
Я поработаюо более эффективном методе чтения / записи в другой раз, сейчас я просто рад, что он работает.Спасибо за помощь!
Исходное сообщение
Я использую библиотеку Commons-Net для взаимодействия с сервером через FTP, и я столкнулся с проблемой при попытке загрузить файлы изсервер на локальной машине.Я не знаю, является ли это ошибкой в Comments-Net.FTPClient, но, скорее всего, я просто не правильно использую библиотеку.Тем не менее, мне не удалось найти решение, когда я погуглил проблему, и пример кода, который я видел, похоже, использует тот же метод для загрузки файлов, что и я.
В любом случае, настоящая проблема заключается в том, чтонекоторые из загруженных файлов полностью пусты, когда они должны содержать данные.Это происходит случайным образом, поэтому каждый раз, когда я загружаю все файлы, разные файлы оказываются пустыми каждый раз.Я предполагаю, что есть проблема с тем, как я читаю данные с сервера или записываю их в файл.
Вот код:
// For each file
InputStream input = ftp.retrieveFileStream(sourcePath);
ftp.completePendingCommand();
OutputStream output = new FileOutputStream(new File(destinationPath));
while (input.available() > 0) {
output.write(input.read());
}
input.close();
output.close();
Я довольноплохо знакомы с сетью, так что я просто глуп и делаю что-то очень простое неправильно?