java下载远程FTP文件至本地
2017-10-19 13:30
507 查看
代码块
例如:public Map<String, Object> downloadFileFromFTP(){ Map<String, Object> data = new HashMap<>(); //获取项目在tomcat部署的路径 String nodepath = this.getClass().getClassLoader().getResource("/").getPath(); String filePath = nodepath.substring(1, nodepath.length() - 17); //通过ftpAddress、ftpName和ftpPassword连接ftp FTPClient ftpClient = new FTPClient(); ftpClient.connect(ftpAddress); boolean isLogin = ftpClient.login(ftpName, ftpPassword); //如果连接成功则继续执行 if(isLogin){ try { //调用FTPClient.enterLocalPassiveMode();这个方法的意思就是每次数据连接之前, //ftp client告诉ftp server开通一个端口来传输数据。为什么要这样做呢,因为ftp server //可能每次开启不同的端口来传输数据,但是在linux上,由于安全限制,可能某些端口没有开启, //所以就出现阻塞。 ftpClient.enterLocalPassiveMode(); //ftpFilePath为所需下载文件在远程FTP服务器根目录中的路径 //fs为ftpFilePath下所有文件集合 FTPFile[] fs = ftpClient.listFiles(ftpFilePath); for(FTPFile ff:fs){ String f= new String(ff.getName().getBytes("iso-8859-1"), "utf-8"); //name为所需下载文件名 if(f.equals(name + ".mp4")){ //将视频名返回前端界面 data.put("videoName",f); //该语句仅仅是在本地TOMCAT服务器指定路径创建了一个对象 File localFile = new File(filePath + "/temp/video/" + f); //如果所创建对象已经存在,则直接跳过,否则执行 if(!localFile.exists()){ //如果文件不存在,则从远程FTP下载,并存储至本地指定路径 OutputStream is = new FileOutputStream(localFile); //设置下载文件相对远程FTP根目录所处的路径 ftpClient.changeWorkingDirectory(path); //FTPClient是经常用到的ftp第三方开发包。但是其默认的编码方式是基于“ISO-8859-1”的。 //因此对文件名含有中文的文件会下载失败,将文件名转换为ISO-8859-1 Boolean b = ftpClient.retrieveFile(ff.getName(), is); is.close(); } break; } } ftpClient.logout(); } catch (IOException e) { e.printStackTrace(); } finally { if (ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (IOException ioe) { } } } } return data; }
开发环境客户端是在windows下tomcat的一个web应用 ; 部署环境是在 linux 下的tomcat的一个web应用。由ftpclient从ftp服务器上取得的文件。在开发环境运行正常(windows),但部署后(linux),发现所下载文件都无法打开。经过对比发现存在字节缺失的情况 。原因如:
windows的回车换行时:/r/n
linux的回车换行是:/n
因此在开始下载文件前设置传输类型:
ftpClient.changeWorkingDirectory(ftpPath); ftpClient.setFileType(FTP.BINARY_FILE_TYPE); Boolean b = ftpClient.retrieveFile(ff.getName(), is);
相关文章推荐
- java 远程从FTP服务器下载文件到本地
- java 远程从FTP服务器下载文件到本地
- java 远程从FTP服务器下载文件到本地
- java下载远程文件到本地
- java 下载远程电脑文件到本地电脑
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- java下载远程文件到本地
- java下载远程文件到本地
- 经过努力终于实现了远程FTP下载文件到本地的批处理
- 工具类—Java下载远程文件到本地
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- java读取FTP文件下载到本地
- JAVA Ftp编程--远程下载文件
- 批处理完成FTP下载远程备份文件到本地
- C#下载远程服务器文件到本地服务器
- C#下载远程文件到本地
- java实现ftp下载文件【转】
- java做的比较完善的FTP连接上传下载文件【转】
- php带密码功能并下载远程文件保存本地指定目录 修改加强版
- 用java编写多线程ftp断点下载文件程序