olayszuvsq 发表于 2016-6-9 12:02:30

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 {


   privateString userName;         //FTP 登录用户名
   privateString password;         //FTP 登录密码
   privateString 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;
    }

    publicvoid 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();

}

}
页: [1]
查看完整版本: org.apache.commons.net.ftp.FTPClient 的简单用法