在使用FTPClient开发的过程中,需要对FTP服务器查询文件,再通过文件名去获取对应的文件流
for (FTPFile file : files) {
if (file.isFile()) { if (file.getName().endsWith(ext)) { // 根据ftp名称下载文件流 InputStream inputStream = ftp.retrieveFileStream(toFtpFileName(file.getName())); List<UploadData> lists = new ArrayList<>();
inputStream.close(); } arFiles.add(pathName + file.getName()); } }
第一次能获取到对应的文件,第二次获取到inputStream则是为null,按照其他出现问题的答案添加了
ftp.enterLocalPassiveMode();
还是为null,在使用了retrieveFileStream(),需要调用ftp.getReply()去消费掉之前的信息,不然之后会一直为null
// 主动消费,防止下次输出文件流为null ftp.getReply();