设为首页 收藏本站
查看: 1108|回复: 0

[经验分享] org.apache.commons.net.ftp.FTPClient 的简单用法

[复制链接]

尚未签到

发表于 2016-6-9 12:02:30 | 显示全部楼层 |阅读模式
(转自新浪 博客)
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();

}

}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-228229-1-1.html 上篇帖子: java操作FTP时遇到的问题小结 下篇帖子: python ftp上传下载文件,支持断点续传
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表