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