apache ftp上傳下載

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.SocketException;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPListParseEngine;
import org.apache.commons.net.ftp.FTPReply;

 


public class FTP {


     private  String userName;         //FTP 登錄用戶名
     private  String password;         //FTP 登錄密碼
     private  String ip;                     //FTP 服務器地址IP地址
     private int port;                        //FTP 端口
     private FTPClient ftpClient = null; //FTP 客戶端代理
 

 public FTP(String userName,String password,String ip,int port) {
  this.userName = userName;
  this.password = password;
  this.ip = ip;
  this.port = port;
 }

 
    public boolean connectServer() {
            boolean flag = true;
            if (ftpClient == null) {
                    int reply;
                    try {
                        System.out.println("into ftpClient == null");
                            ftpClient = new FTPClient();
                            ftpClient.setControlEncoding("GBK"); //文件名亂碼,默認ISO8859-1,不支持中文
//                           System.out.println("encoding "+ftpClient.getControlEncoding());
                            ftpClient.setDefaultPort(port);
                            ftpClient.connect(ip);
                            ftpClient.login(userName, password);
                            System.out.println("Connected to " + ip );
                            System.out.print(ftpClient.getReplyString());
                            reply = ftpClient.getReplyCode();
                            ftpClient.setDataTimeout(120000);

                            if (!FTPReply.isPositiveCompletion(reply)) {
                                    ftpClient.disconnect();
                                    System.err.println("FTP server refused connection.");
                                    flag = false;
                            }

                    } catch (SocketException e) {
                            flag = false;
                            e.printStackTrace();
                            System.err.println("登錄ftp服務器 " + ip + " 失敗,連接超時!");
                    } catch (IOException e) {
                            flag = false;
                            e.printStackTrace();
                            System.err.println("登錄ftp服務器 " + ip + " 失敗,FTP服務器無法打開!");
                    }
            }
            System.out.println("登陸ftp服務器成功"+ip);
            return flag;
    }
  
    public  void listRemoteAllFiles(String path) {
      try {
    FTPListParseEngine f = ftpClient.initiateListParsing(path);
    
       while (f.hasNext()) {
           FTPFile[] files = f.getNext(5); 
           for(FTPFile file:files){
            disFile(file,path);
           }
        }

   } catch (IOException e) {
    e.printStackTrace();
   }
    }
  
    public void disFile(FTPFile file,String path){
     if(file.isDirectory() && !file.getName().equals(".")&& !file.getName().equals("..")){
      System.out.println(File.separator + file.getName());
      listRemoteAllFiles(path+ File.separator +file.getName());
     }else if(!file.getName().equals(".")&& !file.getName().equals("..")){
      System.out.println(file.getName());
     }
    }

   
    public void closeConnect() {
     System.out.println("關閉ftp服務器");
            try {
                    if (ftpClient != null) {
                            ftpClient.logout();
                            ftpClient.disconnect();
                    }
            } catch (Exception e) {
                    e.printStackTrace();
            }
          
    }
   
    public void downFile(String remotePath,String fileName,String localPath) {
     
        FTPFile[] fs;
  try {
   ftpClient.changeWorkingDirectory(remotePath);//轉移到FTP服務器目錄  
   fs = ftpClient.listFiles();
    for(FTPFile ff:fs){  
                if(ff.getName().equals(fileName)){  
                    File localFile = new File(localPath+ File.separator +ff.getName());  
                      
                    FileOutputStream is = new FileOutputStream(localFile);   
                    ftpClient.retrieveFile(ff.getName(), is);  
                    is.close();  
                }
    }
  } catch (IOException e) {
   e.printStackTrace();
  }  
         
     }
   
    public void upFile(String path, String filename, String localFilePath){
      try {
   FileInputStream in=new FileInputStream(new File(localFilePath));
   ftpClient.changeWorkingDirectory(path);
   ftpClient.storeFile(filename, in);
   in.close();
  } catch (Exception e) {
   e.printStackTrace();
  }  
     
    }
 
 
 public static void main(String[] args) {
  FTP ftp = new FTP("lixin","008357","192.168.1.79",21);
  ftp.connectServer();
  
  ftp.listRemoteAllFiles("/");
//  ftp.downFile("/測試報告", "測試報告.mmap", "D://development//workspace//swing");
//  ftp.upFile("/測試報告", "ZIP", "E://個人//save//zip");
  ftp.closeConnect();

 }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章