JAVA FTP文件下载完美版
2018-01-31 11:17
393 查看
之前在项目上遇到FTP下载(也是从别的文章上弄过来的,忘了从那弄的了,抱歉)的问题,文件名中文太长,文件名中有空格(红色为修改后的代码)。修改后的代码如下:
如有侵权请联系删除
public class FtpUtil { private Logger logger = Logger.getLogger(this.getClass()); /** * 获取FTPClient对象 * * @param ftpHost * FTP主机服务器 * @param ftpPassword * FTP 登录密码 * @param ftpUserName * FTP登录用户名 * @param ftpPort * FTP端口 默认为21 * @return */ public FTPClient getFTPClient(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort) { FTPClient ftpClient = new FTPClient(); try { ftpClient = new FTPClient(); ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器 ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器 if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { logger.info("未连接到FTP,用户名或密码错误。"); ftpClient.disconnect(); } else { logger.info("FTP连接成功。"); } } catch (SocketException e) { e.printStackTrace(); logger.info("FTP的IP地址可能错误,请正确配置。"); } catch (IOException e) { e.printStackTrace(); logger.info("FTP的端口错误,请正确配置。"); } return ftpClient; } /* * 从FTP服务器下载文件 * * @param ftpHost FTP IP地址 * * @param ftpUserName FTP 用户名 * * @param ftpPassword FTP用户名密码 * * @param ftpPort FTP端口 * * @param ftpPath FTP服务器中文件所在路径 格式: ftptest/aa * * @param localPath 下载到本地的位置 格式:H:/download * * @param fileName 文件名称 */ public String downloadFtpFile(String ftpHost, String ftpUserName, String ftpPassword, int ftpPort, String ftpPath, String localPath, String fileName) { FTPClient ftpClient = null; try { String remoteFileName = java.net.URLDecoder.decode(fileName, "utf-8"); ftpClient = getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort); ftpClient.setControlEncoding("UTF-8"); // 中文支持 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.enterLocalPassiveMode(); ftpClient.changeWorkingDirectory(ftpPath); //下载到本地 File localFile = new File(localPath + File.separatorChar + fileName.replace(" ","")); OutputStream os = new FileOutputStream(localFile); ftpClient.retrieveFile(new String(remoteFileName.getBytes("GBK"),"ISO-8859-1"), os); os.close(); ftpClient.logout(); return "1"; } catch (FileNotFoundException e) { logger.error("没有找到" + ftpPath + "文件"); e.printStackTrace(); return "2"; } catch (SocketException e) { logger.error("连接FTP失败."); e.printStackTrace(); return "3"; } catch (IOException e) { e.printStackTrace(); logger.error("文件读取错误。"); return "4"; } } }
如有侵权请联系删除
相关文章推荐
- 用java编写多线程ftp断点下载文件程序
- jaVA使用FTP上传下载文件的问题
- java 中使用FTP 下载 上传文件
- JAVA实现FTP服务器文件的上传,下载,删除功能
- 简单java单文件ftp上传下载
- java做的比较完善的FTP连接上传下载文件【转】
- java做的比较完善的FTP连接上传下载文件
- Java FTP(Apache)文件上传、下载
- FTP文件上传与下载(JAVA)
- Java 实现ftp文件的上传和下载
- java通过ftp上传、下载文件,遍历文件目录
- java做的比较完善的FTP连接上传下载文件
- JAVA中使用FTPClient实现文件上传下载
- JAVA使用FTP上传下载文件的问题
- java实现ftp下载文件【转】
- JAVA中FTP文件上传下载
- JAVA实现FTP文件上传下载文件
- java中FTP下载文件
- 用java编写多线程ftp断点下载文件程序
- JAVA连接FTP服务器,并上传/下载文件代码