在此之前,在项目中加上FTP的架包
第一步:配置FTP服务器的相关配置
FtpConfig.java 实体类(配置类)
1 package com.sxd.ftp; 2 3 public class FtpConfig { 4 //主机ip 5 private String FtpHost = "192.168.18.252"; 6 //端口号 7 private int FtpPort = 21; 8 //ftp用户名 9 private String FtpUser = "ftp"; 10 //ftp密码 11 private String FtpPassword = "agenbiology"; 12 //ftp中的目录 这里先指定的根目录13 private String FtpPath = "/";14 15 16 17 public String getFtpHost() {18 return FtpHost;19 }20 public void setFtpHost(String ftpHost) {21 FtpHost = ftpHost;22 }23 public int getFtpPort() {24 return FtpPort;25 }26 public void setFtpPort(int ftpPort) {27 FtpPort = ftpPort;28 }29 public String getFtpUser() {30 return FtpUser;31 }32 public void setFtpUser(String ftpUser) {33 FtpUser = ftpUser;34 }35 public String getFtpPassword() {36 return FtpPassword;37 }38 public void setFtpPassword(String ftpPassword) {39 FtpPassword = ftpPassword;40 }41 public String getFtpPath() {42 return FtpPath;43 }44 public void setFtpPath(String ftpPath) {45 FtpPath = ftpPath;46 } 47 48 49 50 }
第二步:
FtpUtils.java 实现简单的上传下载
1 package com.sxd.ftp; 2 3 import java.io.File; 4 import java.io.FileInputStream; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7 import java.io.InputStream; 8 import java.io.OutputStream; 9 10 import org.apache.commons.net.ftp.FTPClient; 11 import org.junit.Test; 12 13 14 15 public class FtpUtils { 16 17 /** 18 * 获取FTP连接 19 * @return 20 */ 21 public FTPClient getFTPClient() { 22 FtpConfig config = new FtpConfig(); 23 FTPClient ftpClient = new FTPClient(); 24 boolean result = true; 25 try { 26 //连接FTP服务器 27 ftpClient.connect(config.getFtpHost(), config.getFtpPort()); 28 //如果连接 29 if (ftpClient.isConnected()) { 30 //提供用户名/密码登录FTP服务器 31 boolean flag = ftpClient.login(config.getFtpUser(), config.getFtpPassword()); 32 //如果登录成功 33 if (flag) { 34 //设置编码类型为UTF-8 35 ftpClient.setControlEncoding("UTF-8"); 36 //设置文件类型为二进制文件类型 37 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); 38 } else { 39 result = false; 40 } 41 } else { 42 result = false; 43 } 44 //成功连接并 登陆成功 返回连接 45 if (result) { 46 return ftpClient; 47 } else { 48 return null; 49 } 50 } catch (Exception e) { 51 e.printStackTrace(); 52 return null; 53 } 54 } 55 56 57 58 /** 59 * 60 * @param localPath本地路径 61 * @param fileName文件名 62 * @param newPath上传至FTP的新位置 63 * @return 64 */ 65 public boolean testUpload(String localPath,String fileName,String newPath) { 66 boolean result = true; 67 FileInputStream in = null; 68 FTPClient ftpClient = getFTPClient(); 69 if (null == ftpClient) { 70 System.out.println("FTP服务器未连接成功!!!"); 71 return false; 72 } 73 try { 74 //当前上传的文件 75 File file = new File(localPath+fileName); 76 in = new FileInputStream(file); 77 //上传至FTP服务器的新位置 78 ftpClient.changeWorkingDirectory(newPath); 79 //上传 80 ftpClient.storeFile(fileName, in); 81 System.out.println(ftpClient.printWorkingDirectory()); 82 return result; 83 } catch (IOException e) { 84 e.printStackTrace(); 85 return false; 86 } finally { 87 close(in, null, ftpClient); 88 } 89 } 90 91 /** 92 * FTP下载 93 * @param fileName 文件名 94 * @param localPath 95 * @param remotePath 96 * @return 97 */ 98 public boolean testDownload(String localPath,String fileName, String remotePath) { 99 boolean result = true;100 FileOutputStream out = null;101 FTPClient ftpClient = getFTPClient();102 if (null == ftpClient) {103 System.out.println("FTP服务器未连接成功!!!");104 return false;105 }106 try {107 //要写到本地的位置108 File file = new File(localPath + fileName);109 out = new FileOutputStream(file);110 //文件存储在FTP的位置111 ftpClient.changeWorkingDirectory(remotePath);112 //下载文件113 ftpClient.retrieveFile(fileName, out);114 System.out.println(ftpClient.printWorkingDirectory());115 return result;116 } catch (IOException e) {117 e.printStackTrace();118 return false;119 } finally {120 close(null, out, ftpClient);121 }122 }123 124 125 /**126 * 关闭 输入流或输出流127 * @param in128 * @param out129 * @param ftpClient130 */131 public static void close(InputStream in, OutputStream out,FTPClient ftpClient) {132 if (null != in) {133 try {134 in.close();135 } catch (IOException e) {136 e.printStackTrace();137 System.out.println("输入流关闭失败");138 }139 }140 if (null != out) {141 try {142 out.close();143 } catch (IOException e) {144 e.printStackTrace();145 System.out.println("输出流关闭失败");146 }147 }148 if (null != ftpClient) {149 try {150 ftpClient.logout();151 ftpClient.disconnect();152 } catch (IOException e) {153 e.printStackTrace();154 System.out.println("Ftp服务关闭失败!");155 }156 }157 }158 159 160 @Test161 public void test(){162 FtpConfig config = new FtpConfig();163 //上传文件164 // testUpload("D:/","new4.txt" , config.getFtpPath());165 //下载166 testDownload("D:/develop/", "new4.txt", config.getFtpPath());167 168 169 170 }171 }