我正在使用Apache Commons Net的FTPClient从位于服务器上的文件中读取内容。只读一次就能正常工作。但是当我尝试读取第二个文件时,我的FTPClient的InputStream返回null。这是我的代码:
FTPClient ftpClient = new FTPClient();
ftpClient.connect("myhostname");
ftpClient.login("myusername", "mypassword");
// read InputStream from file
InputStream inputStream = ftpClient.retrieveFileStream("/my/firstfile.txt");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// read every line...
// close everything
inputStream.close();
bufferedReader.close();
// second try
inputStream = ftpClient.retrieveFileStream("/my/secondfile.txt");
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
// ...
inputStream.close();
bufferedReader.close();
我做错了什么?
答案 0 :(得分:2)
关闭InputStream
后,请执行以下操作:
ftpClient.completePendingCommand();
您可以在javadoc of FTPClient#retrieveFileStream:
中找到更多信息要完成文件传输,您必须调用completePendingCommand并检查其返回值以验证是否成功。如果不这样做,后续命令可能会出现意外行为。