zoukankan      html  css  js  c++  java
  • 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. }  
  • 相关阅读:
    周末之个人杂想(十三)
    PowerTip of the DaySorting Multiple Properties
    PowerTip of the DayCreate Remoting Solutions
    PowerTip of the DayAdd Help to Your Functions
    PowerTip of the DayAcessing Function Parameters by Type
    PowerTip of the DayReplace Text in Files
    PowerTip of the DayAdding Extra Information
    PowerTip of the DayPrinting Results
    Win7下IIS 7.5配置SSAS(2008)远程访问
    PowerTip of the DayOpening Current Folder in Explorer
  • 原文地址:https://www.cnblogs.com/likeju/p/5108808.html
Copyright © 2011-2022 走看看