ftp上传文件2

来源:互联网 发布:淘宝买鸽子行不行 编辑:程序博客网 时间:2024/06/02 13:27

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  StringuserName;        //FTP 登录用户名
    private  Stringpassword;        //FTP 登录密码
    private  Stringip;                    //FTP 服务器地址IP地址
    private intport;                       //FTP 端口
    private FTPClient ftpClient = null; //FTP 客户端代理
 

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

 
    publicboolean 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 {
    FTPListParseEnginef = ftpClient.initiateListParsing(path);
    
      while (f.hasNext()) {
          FTPFile[] files = f.getNext(5); 
          for(FTPFile file:files){
          disFile(file,path);
          }
       }

   } catch(IOException e) {
    e.printStackTrace();
   }
    }
  
    public voiddisFile(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());
    }elseif(!file.getName().equals(".")&&!file.getName().equals("..")){
     System.out.println(file.getName());
    }
    }

   
    public voidcloseConnect() {
    System.out.println("关闭ftp服务器");
           try {
                   if (ftpClient != null) {
                           ftpClient.logout();
                           ftpClient.disconnect();
                   }
           } catch (Exception e) {
                   e.printStackTrace();
           }
          
    }
   
    public voiddownFile(String remotePath,String fileName,String localPath){
    
       FTPFile[] fs;
  try {
   ftpClient.changeWorkingDirectory(remotePath);//转移到FTP服务器目录  
   fs =ftpClient.listFiles();
    for(FTPFileff:fs){  
               if(ff.getName().equals(fileName)){  
                   File localFile = new File(localPath+ File.separator+ff.getName());  
                      
                   FileOutputStream is = newFileOutputStream(localFile);   
                   ftpClient.retrieveFile(ff.getName(),is);  
                   is.close();  
               }
    }
  } catch (IOException e) {
   e.printStackTrace();
   
         
    }
   
    public voidupFile(String path, String filename, String localFilePath){
     try {
   FileInputStreamin=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 = newFTP("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();

 }

}