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. }  
  • 相关阅读:
    elasticsearch
    CentOS6.9安装Logstash
    CentOS6.9安装Filebeat监控Nginx的访问日志发送到Kafka
    openresty capture
    CentOS6.9安装socat
    CentOS挂Windows的NFS备忘
    openCV 备忘
    rabbitmq更换数据文件和日志文件的存放位置
    根据某个文件或文件夹自制rpm包
    checkinstall打包工具使用
  • 原文地址:https://www.cnblogs.com/likeju/p/5108808.html
Copyright © 2011-2022 走看看