【发布时间】:2014-06-11 12:05:36
【问题描述】:
我正在使用FTPClient 访问 ftp 服务器。我就是这样做的:
public static void main(String[] args) {
FTPClient ftpClient = new FTPClient();
try {
String SERVER = "10.67.192.18";
String USER = "user";
String PASS = "pass";
String DIR = "/reports/ClientSessions/";
ftpClient.connect(SERVER, 21);
ftpClient.login(USER, PASS);
ftpClient.enterLocalPassiveMode();
ftpClient.setFileType(org.apache.commons.net.ftp.FTP.BINARY_FILE_TYPE);
InputStream io1 = ftpClient.retrieveFileStream(DIR + "filename1.csv");
System.out.println(io1);
io1.close();
InputStream io2 = ftpClient.retrieveFileStream(DIR + "filename1.csv");
System.out.println(io2);
io2.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
ftpClient.logout();
ftpClient.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}
第二个InputStream 为空。如果我先评论InputStream,代码会执行得很好。怎么了?
【问题讨论】:
-
文件似乎不存在或无法读取。见documentation
-
451 Requested action aborted. Local error in processing -
我怀疑当您
close()您的第一个 InputStream 时,您也在关闭 FTPClient 正在使用的底层连接内容。因此,您的第二个 InputStream 没有什么可指的。如果需要拉下多个文件,要么不要立即关闭流,要么对每个文件重新连接