我是靠谱客的博主 单纯月亮,最近开发中收集的这篇文章主要介绍FTP服务,retrieveFileStream方法卡住线程挂起、retrieveFileStream总是返回null,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(1)在请求FTP服务进行下载文件时,需要循环遍历文件夹获取文件进行解析,但是在in = ftpClient.retrieveFileStream(file.getName());
时,输入流总是获取到null,一定要执行in.close();关闭输出流之后,再执行ftpClient.completePendingCommand();传输结束方法。
(2)本人FTP服务使用的时 window系统,在本地开发时使用的是window开发,进行远程ftp访问是没有问题的数据能够解析并且入库,但是部署到LINUX系统后,在retrieveFileStream方法出现了线程阻塞,连接ftp服务的线程挂起。在ftp连接时,ftpClient.enterLocalPassiveMode(); 设置为被动传输模式就可以解决线程挂起问题。

代码如下:
//ftp指定目录下的AEI文件夹数组
FTPFile[] ftpDirectory = ftpClient.listFiles();
//循环遍历子文件夹下的所有文件
for(int i = 0;i < ftpDirectory.length;i++) {
    //获取一个子文件夹
    FTPFile oneDirectory = ftpDirectory[i];
    //判断是否是文件夹
    if(oneDirectory.isDirectory()){
        //改变工作目录到指定目录的子文件夹
        ftpClient.changeWorkingDirectory(oneDirectory.getName());
        //获取子文件夹的所有报文
        FTPFile[] files = ftpClient.listFiles();
        //获取自目录下的报文
        for(FTPFile file : files){
                //D报文获取
                if("D".equals(file.getName().substring(0, 1))){
                    //获取输入流
                    in = ftpClient.retrieveFileStream(file.getName());
                    //根据文件名将对应输入流转换为字符流
                    br = new BufferedReader(new InputStreamReader(in));
                    //将文件名与文件内容的第一行赋予待解析报文Map,防止map的key重复,将文件内容作为key
                    filesMap.put(br.readLine(), file.getName());
                    //关闭输入流
                    in.close();
                    //ftp传输结束
                    ftpClient.completePendingCommand();
                    //添加该文件到要删除源文件的报文集合
                    delFilesList.add("\"+oneDirectory.getName()+"\"+file.getName());
                }
        }
        //将工作目录改回原指定目录,为了遍历下一个子文件夹
        ftpClient.changeToParentDirectory();
    }
}
//关闭ftp连接
ftpClient.disconnect();
//关闭字符缓冲输入流
if(br != null){
    br.close();
}

最后

以上就是单纯月亮为你收集整理的FTP服务,retrieveFileStream方法卡住线程挂起、retrieveFileStream总是返回null的全部内容,希望文章能够帮你解决FTP服务,retrieveFileStream方法卡住线程挂起、retrieveFileStream总是返回null所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部