org.apache.commons.net.ftp.FTPClient 的简单用法

(转自新浪 博客)
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();

}

}

你可能感兴趣的:(apache,.net,swing,F#)