如何正确关闭ftpclientfilestream

mcdcgff0  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(576)

我从apachecommons-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();

我做错什么了?

vd8tlhqk

vd8tlhqk1#

关闭后 InputStream ,请执行以下操作:

ftpClient.completePendingCommand();

您可以在ftpclient#retrievefilestream的javadoc中找到更多信息:
要完成文件传输,必须调用completependingcommand并检查其返回值以验证是否成功。如果不这样做,随后的命令可能会出现意外的行为。

相关问题