如何将 FTPFile 列表转换为 Java 中的文件列表?
How to convert FTPFile list to File List in Java?
我有一个 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
[ 创建的异常=26=] 中生成的值 ftpClient.retrieveFileStream(file.getName())
.
请帮忙。
来自 FTPClient#listFiles()
的 Javadoc:
NOTE: This array may contain null members if any of the individual file listings failed to parse. The caller should check each entry for null before referencing it.
您必须检查数组中返回的每一项是否为 null,否则您将得到 NPE。
您必须在下载文件后完成传输。这就是您能够下载第一个文件并在下载第二个文件时遇到问题的原因。
success = ftpClient.completePendingCommand();
if (success) {
System.out.println("File has been downloaded successfully.");
}
如果问题仍然存在,您可以调用 ftpClient.getReplyCode() ,它会告诉您无法下载文件的原因。一般 retrieveFileStream returns null 当它打不开数据连接
我有一个 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
[ 创建的异常=26=] 中生成的值 ftpClient.retrieveFileStream(file.getName())
.
请帮忙。
来自 FTPClient#listFiles()
的 Javadoc:
NOTE: This array may contain null members if any of the individual file listings failed to parse. The caller should check each entry for null before referencing it.
您必须检查数组中返回的每一项是否为 null,否则您将得到 NPE。
您必须在下载文件后完成传输。这就是您能够下载第一个文件并在下载第二个文件时遇到问题的原因。
success = ftpClient.completePendingCommand();
if (success) {
System.out.println("File has been downloaded successfully.");
}
如果问题仍然存在,您可以调用 ftpClient.getReplyCode() ,它会告诉您无法下载文件的原因。一般 retrieveFileStream returns null 当它打不开数据连接