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();参考点击打开链接



 

猜你喜欢

转载自blog.csdn.net/qq_37320823/article/details/80538592
FTP