java上传、下载、删除ftp文件

一共三个类,一个工具类Ftputil.,一个实体类Kmconfig。一个测试类Test

 下载地址:http://download.csdn.net/detail/myfmyfmyfmyf/6697107

Ftputil类---------------

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package ftpDemo;  
  2.   
  3. import java.io.DataOutputStream;  
  4. import java.io.InputStream;  
  5. import java.io.OutputStream;  
  6.   
  7. import sun.net.TelnetInputStream;  
  8. import sun.net.TelnetOutputStream;  
  9. import sun.net.ftp.FtpClient;  
  10.   
  11.   
  12.   
  13. public class ftpUtil {  
  14.     // 上传文件至FTP通用方法  
  15.     public static void upLoadFileFtp(KmConfig kmConfig,InputStream is, String fileName){  
  16.   
  17.         try {  
  18.             String ftpHost = kmConfig.getFtpHost();  
  19.             int port = kmConfig.getFtpPort();  
  20.             String userName = kmConfig.getFtpUser();  
  21.             String passWord = kmConfig.getFtpPassword();  
  22.             String path = kmConfig.getFtpPath();  
  23.               
  24.   
  25.             FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。  
  26.             ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码  
  27.             ftpClient.binary();  
  28.             ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。  
  29.   
  30.             TelnetOutputStream telnetOut = ftpClient.put(fileName);// fileName为上传的文件名  
  31.             DataOutputStream dataOut = new DataOutputStream(telnetOut);  
  32.             byte buffer[] = new byte[1024 * 1024];  
  33.             int count = 0;  
  34.             while ((count = is.read(buffer)) != -1) {  
  35.                 dataOut.write(buffer, 0, count);  
  36.             }  
  37.             telnetOut.close();  
  38.             dataOut.close();  
  39.             ftpClient.closeServer();  
  40.         } catch (Exception e) {  
  41.             System.out.println("上传文件失败!请检查系统FTP设置,并确认FTP服务启动");  
  42.         }  
  43.     }  
  44.   
  45.     // 删除文件至FTP通用方法  
  46.     public static void deleteFileFtp(KmConfig kmConfig,String fileName){  
  47.         try {  
  48.             String ftpHost = kmConfig.getFtpHost();  
  49.             int port = kmConfig.getFtpPort();  
  50.             String userName = kmConfig.getFtpUser();  
  51.             String passWord = kmConfig.getFtpPassword();  
  52.             String path = kmConfig.getFtpPath();  
  53.   
  54.             FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。  
  55.             ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码  
  56.             ftpClient.binary();  
  57.             ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。  
  58.             try {  
  59.                 ftpClient.sendServer("dele " + fileName + " ");  
  60.             } catch (Exception e) {  
  61.                 System.out.println("删除文件失败!请检查系统FTP设置,并确认FTP服务启动");  
  62.             }  
  63.             ftpClient.closeServer();  
  64.         } catch (Exception e) {  
  65.             System.out.println("删除文件失败!");  
  66.         }  
  67.     }  
  68.   
  69.     // 下载ftp文件  
  70.     public static void downloadFileFtp(KmConfig kmConfig,String fileName, String clientFileName, OutputStream outputStream){  
  71.         try {  
  72.             String ftpHost = kmConfig.getFtpHost();  
  73.             int port = kmConfig.getFtpPort();  
  74.             String userName = kmConfig.getFtpUser();  
  75.             String passWord = kmConfig.getFtpPassword();  
  76.             String path = kmConfig.getFtpPath();  
  77.   
  78.             FtpClient ftpClient = new FtpClient(ftpHost, port);// ftpHost为FTP服务器的IP地址,port为FTP服务器的登陆端口,ftpHost为String型,port为int型。  
  79.             ftpClient.login(userName, passWord);// userName、passWord分别为FTP服务器的登陆用户名和密码  
  80.             ftpClient.binary();  
  81.             ftpClient.cd(path);// path为FTP服务器上保存上传文件的路径。  
  82.             try {  
  83.                 TelnetInputStream in = ftpClient.get(fileName);  
  84.                 byte[] bytes = new byte[1024];  
  85.                 int cnt=0;  
  86.                 while ((cnt=in.read(bytes,0,bytes.length)) != -1) {  
  87.                     outputStream.write(bytes, 0, cnt);  
  88.                 }  
  89.                 outputStream.close();  
  90.                 in.close();  
  91.             } catch (Exception e) {  
  92.                 ftpClient.closeServer();  
  93.                 e.printStackTrace();  
  94.             }  
  95.             ftpClient.closeServer();  
  96.         } catch (Exception e) {  
  97.             System.out.println("下载文件失败!请检查系统FTP设置,并确认FTP服务启动");  
  98.         }  
  99.     }  
  100.   
  101.     //在ftp服务器上穿件文件夹     
  102.         public boolean createDir(String path,FtpClient ftpClient) throws Exception{    
  103.                 
  104.              
  105.             //进入到home文件夹下     
  106.             ftpClient.cd("/home");    
  107.             //创建远程文件夹      
  108.            //远程命令包括     
  109.            //USER    PORT    RETR    ALLO    DELE    SITE    XMKD    CDUP    FEAT<br>     
  110. //          PASS    PASV    STOR    REST    CWD     STAT    RMD     XCUP    OPTS<br>     
  111. //          ACCT    TYPE    APPE    RNFR    XCWD    HELP    XRMD    STOU    AUTH<br>     
  112. //          REIN    STRU    SMNT    RNTO    LIST    NOOP    PWD     SIZE    PBSZ<br>     
  113. //          QUIT    MODE    SYST    ABOR    NLST    MKD     XPWD    MDTM    PROT<br>     
  114. //               在服务器上执行命令,如果用sendServer来执行远程命令(不能执行本地FTP命令)的话,所有FTP命令都要加上/r/n<br>     
  115. //                    ftpclient.sendServer("XMKD /test/bb/r/n"); //执行服务器上的FTP命令<br>     
  116. //                    ftpclient.readServerResponse一定要在sendServer后调用<br>     
  117. //                    nameList("/test")获取指目录下的文件列表<br>     
  118. //                    XMKD建立目录,当目录存在的情况下再次创建目录时报错<br>     
  119. //                    XRMD删除目录<br>     
  120. //                    DELE删除文件<br>     
  121.            //通过远程命令 穿件一个files文件夹     
  122.             ftpClient.sendServer("MKD "+ path + " ");    
  123.             //这个方法必须在 这两个方法中间调用 否则 命令不管用     
  124.             ftpClient.binary();    
  125.             ftpClient.readServerResponse();    
  126.                 
  127.             return false;    
  128.         }    
  129.   
  130.   
  131.   
  132. /**  
  133.   * 检查文件夹是否存在  
  134.   * @param dir  
  135.   * @param ftpClient  
  136.   * @return  
  137.   */   
  138.     public boolean isDirExist(String dir, FtpClient ftpClient) {   
  139.          try {   
  140.             ftpClient.cd(dir);   
  141.         } catch (Exception e) {   
  142.       
  143.             return false;   
  144.         }   
  145.         return true;   
  146.     }   
  147.   
  148. }  


 

Kmconfig类---------------

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. package ftpDemo;  
  2.   
  3. public class KmConfig {  
  4.     //主机ip  
  5.     private String FtpHost = "";  
  6.     //端口号  
  7.     private int FtpPort;  
  8.     //ftp用户名  
  9.     private String FtpUser = "";  
  10.     //ftp密码  
  11.     private String FtpPassword = "";  
  12.     //ftp中的目录  
  13.     private String FtpPath = "";  
  14.     public String getFtpHost() {  
  15.         return FtpHost;  
  16.     }  
  17.     public void setFtpHost(String ftpHost) {  
  18.         FtpHost = ftpHost;  
  19.     }  
  20.     public int getFtpPort() {  
  21.         return FtpPort;  
  22.     }  
  23.     public void setFtpPort(int ftpPort) {  
  24.         FtpPort = ftpPort;  
  25.     }  
  26.     public String getFtpUser() {  
  27.         return FtpUser;  
  28.     }  
  29.     public void setFtpUser(String ftpUser) {  
  30.         FtpUser = ftpUser;  
  31.     }  
  32.     public String getFtpPassword() {  
  33.         return FtpPassword;  
  34.     }  
  35.     public void setFtpPassword(String ftpPassword) {  
  36.         FtpPassword = ftpPassword;  
  37.     }  
  38.     public String getFtpPath() {  
  39.         return FtpPath;  
  40.     }  
  41.     public void setFtpPath(String ftpPath) {  
  42.         FtpPath = ftpPath;  
  43.     }  
  44.       
  45.       
  46.       
  47. }  


 

Test类---------------

[java] view plaincopy在CODE上查看代码片派生到我的代码片
 
    1. package ftpDemo;  
    2.   
    3. import java.io.File;  
    4. import java.io.FileInputStream;  
    5. import java.io.FileNotFoundException;  
    6. import java.io.InputStream;  
    7.   
    8. public class Test {  
    9.     public static void main(String[] args) {  
    10.         //设置ftp  
    11.         KmConfig km = new KmConfig();  
    12.         km.setFtpHost("172.20.32.48");  
    13.         km.setFtpPort(21);  
    14.         km.setFtpUser("test");  
    15.         km.setFtpPassword("111111");  
    16.         km.setFtpPath("KM");  
    17.           
    18.         //上传到ftp  
    19.         ftpUtil util=new ftpUtil();  
    20.         File file = new File("F:/文章2.jpg");  
    21.         InputStream in;  
    22.         try {  
    23.             in = new FileInputStream(file);  
    24.             util.upLoadFileFtp(km, in, "更改后的名字.jpg");  
    25.         } catch (FileNotFoundException e) {  
    26.             // TODO Auto-generated catch block  
    27.             e.printStackTrace();  
    28.         }  
    29.           
    30.           
    31.         //页面访问: ftp://账户:密码@ip地址:端口号/文件夹目录/  
    32.         //  ftp://test:111111@222.22.22.11:21/image/  
    33.     }  
    34. }  
原文地址:https://www.cnblogs.com/likeju/p/5108808.html