1. package com.tw.ftp;  
  2.  
  3. import java.io.File;  
  4. import java.io.FileInputStream;  
  5. import java.io.IOException;  
  6.  
  7. import org.apache.commons.io.IOUtils;  
  8. import org.apache.commons.net.ftp.FTPClient;  
  9. import org.apache.commons.net.ftp.FTPReply;  
  10.  
  11. /**  
  12.  *

    ftp连接管理(使用apache commons-net-1.4.1 lib)

     
  13.  *@author tangw 2010-12-26  
  14.  *  
  15.  */ 
  16. public class FtpConManager {  
  17.     private static FtpConManager instance;  
  18.     private FTPClient ftpClient =null;  
  19.       
  20.     /**  
  21.      * get FtpConManager  
  22.      * @return FtpConManager  
  23.      */ 
  24.     public synchronized static FtpConManager getInstance(){  
  25.         if( instance == null ){  
  26.             instance = new FtpConManager();  
  27.         }  
  28.         return instance;  
  29.     }  
  30.  
  31.       
  32.     /**  
  33.      * 

    ftp登录

     
  34.      * @param s_url ftp服务地址  
  35.      * @param uname 用户名  
  36.      * @param pass  密码  
  37.      */ 
  38.     public void login(String s_url,String uname,String pass){  
  39.         ftpClient = new FTPClient();  
  40.         try{  
  41.             //连接  
  42.             ftpClient.connect(s_url);  
  43.             ftpClient.login(uname,pass);  
  44.             //检测连接是否成功  
  45.             int reply = ftpClient.getReplyCode();  
  46.             if(!FTPReply.isPositiveCompletion(reply)) {  
  47.                 this.closeCon();  
  48.                 System.err.println("FTP server refused connection.");  
  49.                 System.exit(1);  
  50.             }  
  51.         }catch(Exception ex){  
  52.             ex.printStackTrace();  
  53.             //关闭  
  54.             this.closeCon();  
  55.         }  
  56.     }//end method login  
  57.       
  58.       
  59.     /**  
  60.      * 

    ftp上传文件

     
  61.      * @author tangw 2010-12-26  
  62.      * @param srcUrl 须上传文件  
  63.      * @param targetFname 生成目标文件  
  64.      * @return true||false  
  65.      */ 
  66.     public boolean uploadFile(String srcUrl,String targetFname){  
  67.         boolean flag = false;  
  68.         if( ftpClient!=null ){  
  69.              File srcFile = new File(srcUrl);   
  70.              FileInputStream fis = null;  
  71.              try {  
  72.                 fis  = new FileInputStream(srcFile);  
  73.                   
  74.                 //设置上传目录   
  75.                 ftpClient.changeWorkingDirectory("/ImData/");  
  76.                 ftpClient.setBufferSize(1024);   
  77.                 ftpClient.setControlEncoding("GBK");   
  78.                   
  79.                 //设置文件类型(二进制)   
  80.                 ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);  
  81.                 //上传  
  82.                 flag = ftpClient.storeFile(targetFname, fis);   
  83.             } catch (Exception e) {  
  84.                 e.printStackTrace();  
  85.                 this.closeCon();  
  86.             }finally{  
  87.                 IOUtils.closeQuietly(fis);  
  88.             }  
  89.         }  
  90.         return flag;  
  91.     }//end method uploadFile  
  92.       
  93.       
  94.     /**  
  95.      *   
  96.      * 

    删除ftp上的文件

     
  97.      * @author tangw 2010-12-26  
  98.      * @param srcFname  
  99.      * @return true || alse  
  100.      */ 
  101.     public boolean removeFile(String srcFname){  
  102.         boolean flag = false;  
  103.         if( ftpClient!=null ){  
  104.             try {  
  105.                 flag = ftpClient.deleteFile(srcFname);  
  106.             } catch (IOException e) {  
  107.                 e.printStackTrace();  
  108.                 this.closeCon();  
  109.             }  
  110.         }  
  111.         return flag;  
  112.     }//end method removeFile  
  113.       
  114.     /**  
  115.      *

    销毁ftp连接

     
     
  116.      *@author tangw 2010-12-26  
  117.      */ 
  118.     public void closeCon(){  
  119.         if(ftpClient !=null){  
  120.             if(ftpClient.isConnected()){  
  121.                 try {  
  122.                     ftpClient.logout();  
  123.                     ftpClient.disconnect();  
  124.                 } catch (IOException e) {  
  125.                     e.printStackTrace();  
  126.                 }   
  127.             }  
  128.         }  
  129.     }//end method closeCon  
  130. }  

 

   
   
   
   
  1. package com.tw.ftp;  
  2.  
  3. /**  
  4.  * 

    使用apache commons-net-1.4.1 实现ftp上传功能

     
  5.  * @author tangw 2010-12-26  
  6.  *  
  7.  */ 
  8. public class FtpNetTest {  
  9.  
  10.     /**  
  11.      * @param args  
  12.      */ 
  13.     public static void main(String[] args) {  
  14.         FtpConManager.getInstance().login("ftp服务地址""登陆名""密码");  
  15.         //boolean flag = FtpConManager.getInstance().uploadFile("d:\\use_1.zip", "3.zip");  
  16.         boolean flag = FtpConManager.getInstance().removeFile("/ImData/3.zip");  
  17.         System.out.println("flag:"+flag);  
  18.         //FtpConManager.getInstance().closeCon();  
  19.  
  20.     }  
  21.