关闭输入流之后返回的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();参考点击打开链接