ftp.retrieveFileStream(ftp文件路径);调用后返回inputStream对象为空。

关闭输入流之后返回的inputStream对象为空,用bytes保存后返回出去再new ByteArrayInputStream(bytes); 方法可以获得输入流。

ftp部分代码

 
  
 
  
FTPClient ftp = new FTPClient();
ftp.setDataTimeout(60000);       //设置传输超时时间为60秒
ftp.setConnectTimeout(60000);       //连接超时为60秒
ftp.connect(host, port);
// 如果采用默认端口,可以使用ftp.connect(host)的方式直接连接FTP服务器
ftp.login(username, password);// 登录
int reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
    ftp.disconnect();
}


InputStream inputStream = ftp.retrieveFileStream(remotePath);


byte[]  bytes = IOUtils.toByteArray(inputStream);
//手动关闭 再调用completePendingCommand
inputStream.close();
ftp.completePendingCommand();
ftp.disconnect();

为什么要执行inputStream.close();再执行ftp.completePendingCommand();参考点击打开链接



 
 

你可能感兴趣的:(ftp.retrieveFileStream(ftp文件路径);调用后返回inputStream对象为空。)