javaftp下载出现阻塞问题

用ftp下载时,执行到ftpClient.retrieveFile(fileName, os); 这个方法就卡死了,在网上找了很多方法也不行, ftpClient.enterLocalPassiveMode(); 加上主动被动都不行,跪求大神帮忙解决 

https://img3.mukewang.com/5b6d50130001e78b04590020.jpg

莫回无
浏览 1871回答 2
2回答

大话西游666

以下为下载方法     /**      * 下载.      * @param remotePath FTP目录      * @param fileName 文件名      * @param localPath 本地目录      * @return Result      * @throws IOException       */     public Result download(String remotePath, String fileName, String localPath) throws IOException {         boolean flag = true;         Result result = null;         // 初始化FTP当前目录         currentPath = remotePath;         // 初始化当前流量         response = 0;         // 更改FTP目录         ftpClient.changeWorkingDirectory(remotePath);         // 得到FTP当前目录下所有文件         FTPFile[] ftpFiles = ftpClient.listFiles();         // 循环遍历         for (FTPFile ftpFile : ftpFiles) {             // 找到需要下载的文件             if (ftpFile.getName().equals(fileName)) {                 System.out.println("download...");                 // 创建本地目录                 File file = new File(localPath + "/" + fileName);                 // 下载前时间                 Date startTime = new Date();                 if (ftpFile.isDirectory()) {                     // 下载多个文件                     flag = downloadMany(file);                 } else {                     // 下载当个文件                     flag = downloadSingle(file, ftpFile);                 }                 // 下载完时间                 Date endTime = new Date();                 // 返回值                 result = new Result(flag, Util.getFormatTime(endTime.getTime() - startTime.getTime()), Util.getFormatSize(response));             }         }         return result;     }再建一个Result 类 /**  * 执行每一个动作后响应的结果,包括成功的和失败的.  *   * @author hao_yujie, cui_tao  *  */ public class Result {     /**      * 响应的内容.      */     private String response;     /**      * 响应的结果.      */     private boolean succeed;     /**      * 响应的时间.      */     private String time;     /**      * 无参的构造方法.      */     public Result() {     }     /**      * 构造方法.      *       * @param res 响应的内容      */     public Result(String res) {         this.response = res;     }     /**      * 构造方法.      *       * @param suc 响应的结果      * @param ti 响应的时间      * @param res 响应的内容      */     public Result(boolean suc, String ti, String res) {         this.succeed = suc;         this.time = ti;         this.response = res;     }     /**      * 得到相应内容.      *       * @return 相应内容      */     public String getResponse() {         return response;     }     /**      * 设置相应内容.      *       * @param response 响应内容      */     public void setResponse(String response) {         this.response = response;     }     /**      * 得到相应结果.      *       * @return 相应结果      */     public boolean isSucceed() {         return succeed;     }     /**      * 设置响应结果.      *       * @param succeed 响应结果      */     public void setSucceed(boolean succeed) {         this.succeed = succeed;     }     /**      * 得到响应时间.      *       * @return 响应时间      */     public String getTime() {         return time;     }     /**      * 设置响应时间.      *       * @param time 响应时间      */     public void setTime(String time) {         this.time = time;     } }

潇湘沐

下载文件的方法是用什么方式去下载都没给1. File localFile = new File(downFilePath + name);1. OutputStream is = new FileOutputStream(localFile);1. //retrieveFile的第一个参数需要是 ISO-8859-1 编码,并且必须是完整路径!1. String fileName = partsRemoteDir + name;1. ftpClient.retrieveFile(new String(fileName.getBytes("GBK"),"ISO-8859-1"), is);1. result="下载成功";1. is.close();我是直接连接到ftp,然后用这段代码下载
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java