FTP上传下载问题

2019-08-20  本文已影响0人  墨色尘埃

连接、登陆、登陆之后取得登陆状态(成功、失败)
如果登陆失败,则关闭ftp连接。
登陆成功之后,跳转到目录下 ftpClient.changeWorkingDirectory("/" + rootPath + "/" + filePath);
目标文件和该目录下的所有文件进行比较
但是有一个问题,就是文件很多的话,这样一比较会导致很慢很慢,性能不好。所以这里直接就省去了这一步骤。

FTPFile[] fs = ftpClient.listFiles();  //当天目录下文件太多的话,导致读取很慢
for (FTPFile ff : fs) {
    String f = new String(ff.getName().getBytes(Charset.forName("ISO-8859-1")), Charset.forName("GBK"));
    if (f.equals(fileName)) {
        InputStream inputStream = ftpClient.retrieveFileStream(ff.getName());
    }
}

读取文件采用ftpClient.retrieveFileStream有问题,具体待研究
所以采用下面这种方式读取文件流

 ByteArrayOutputStream byteArrayOutputStream =new ByteArrayOutputStream();
 ftpClient.retrieveFile(fileName, byteArrayOutputStream);
 InputStream inputStream = byteArrayOutputStream.toInputStream();

将读出来的IO流写入压缩包中,直接返回压缩包流回去,前端会直接下载下来。
进入文件目录的时候,尤其要注意:使用的是绝对路径还是相对路径

注:使用FTP上传下载文件,服务器端口会被大量占用,关于计算机端口:
服务器端口数量

上一篇 下一篇

猜你喜欢

热点阅读