У меня есть список файлов, которые необходимо прочитать с FTP-сервера. У меня есть метод readFile(String path, FTPClient client)
, который читает и печатает файл.
public byte[] readFile(String path,FTPClient client){
InputStream inStream = null;
ByteArrayOutputStream os = null;
byte[] finalBytes = new byte[0];
int reply;
int len;
byte[] buffer = new byte[1024];
try{
os = new ByteArrayOutputStream();
inStream = client.retrieveFileStream(path);
reply = client.getReplyCode();
log.warn("In getFTPfilebytes() :: Reply code -"+reply);
while ((len = inStream.read(buffer)) != -1) {
// write bytes from the buffer into output stream
os.write(buffer, 0, len);
}
finalBytes = os.toByteArray();
if(inStream == null){
throw new Exception("File not found");
}
inStream.close();
}catch(Exception e){
}finally{
try{ inStream.close();} catch(Exception e){}
}
return finalBytes;
}
Я вызываю вышеуказанный метод в цикле списка, который содержит строки пути к файлу.
Проблема - только в циклеПервый файл читается правильно. После этого он не читает файл и выдает исключение. inStream
дает NULL для второй итерации / второго файла. Кроме того, при повторении первого кода ответа код файла после retrieveFileStream
равен "125 (Соединение для передачи данных уже открыто; передача начинается.) "
Во второй итерации выдается "200 (Запрошенныйдействие было успешно завершено.) "
Я не могу понять, что здесь не так. Не правильно закрыли inputstream
соединение?