如何在Java中将FTP文件列表转换为文件列表? [重复]

问题描述 投票:-1回答:2

这个问题在这里已有答案:

我有一个FTP文件列表,我只能将第一个FTPFile转换为File。我正在使用org.apache.commons.net.ftp库。 我的代码第一次正常工作:

for (FTPFile file : files) {
  if(ftpClient.sendNoOp()){
   if(file.getName()!=null || !file.getName().equals("")) {
           InputStream iStream=ftpClient.retrieveFileStream(file.getName());
           File file2 = File.createTempFile("xml", null);
           FileUtils.copyInputStreamToFile(iStream, file2);
           iStream.close();
                }
  }
}

从这段代码开始,循环仅遍历时间,并且FTPFile被转换为File,之后它将获得由null中生成的ftpClient.retrieveFileStream(file.getName())值创建的异常。 请帮忙。

java file ftp apache-commons ftp-client
2个回答
1
投票

下载文件后,您必须完成传输。这就是您能够下载第一个文件并且第二个文件下载有问题的原因。

 success = ftpClient.completePendingCommand();
 if (success) {
                System.out.println("File has been downloaded successfully.");
  }

如果问题仍然存在,您可以调用ftpClient.getReplyCode(),它将告诉您无法下载文件的原因。通常,retrieveFileStream在无法打开数据连接时返回null


0
投票

来自qavxswpoi的Javadoc:

注意:如果任何单个文件列表无法解析,则此数组可能包含空成员。调用者应在引用之前检查每个条目是否为null。

您必须在数组中返回的每个项目上检查null,否则您将获得NPE。

© www.soinside.com 2019 - 2024. All rights reserved.