使用FTPClient循环获取inputStream值为null

 

在使用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();

 

 
posted @ 2020-11-10 16:55  47Knife  阅读(866)  评论(0编辑  收藏  举报