zoukankan      html  css  js  c++  java
  • FTPClient

    工具类:

    package com.azcSoft.zbksyj.task.util;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.SocketException;
    import java.util.ArrayList;
    import java.util.List;
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    import org.apache.commons.net.ftp.FTPReply;
    public class FtpClientUtil implements IFtpClient {
    /**
    * 客户端代理
    */
        private static FTPClient ftpClient; 
        /**
        * 连接ftp Server
        * @param userName ..
        * @param password ..
        * @param ip ..
        * @param port ..
        * @return boolean ..
         * @throws Exception 
        */
       public boolean connectServer(String userName,String password,String ip,int port) throws Exception   {
            boolean flag = true;
            /**接收异常信息.**/
                int reply;
                try {
                if(ftpClient == null){
                ftpClient = new FTPClient();
                }            
                    /**文件名乱码,默认ISO8859-1,不支持中文 */
                    ftpClient.setControlEncoding("GBK"); 
                    ftpClient.connect(ip,port);
                    ftpClient.login(userName, password);
                  
                    reply = ftpClient.getReplyCode();
                    /**连接超时设置*/
                    ftpClient.setDataTimeout(120000);
                    if (!FTPReply.isPositiveCompletion(reply)) {
                        ftpClient.disconnect();
                        flag = false;
                    }
                } catch (SocketException e) {
                    flag = false;
                    throw new Exception(e);
                } catch (IOException e) {
                    flag = false;
                    throw new Exception(e);
                }       
              return flag;
        }
       
       /**
        * 关闭ftp server
        * @throws IOException 
        */
       public void closeConnect() throws IOException  {
            
                  if (ftpClient != null) {
                      ftpClient.logout();
                      ftpClient.disconnect();
                  }                    
       }
       
       /**
        * 列出服务器指定路径下的文件目录
        * @param path ..
        * @return List ..
        * @throws IOException 
        */
       public  List<String> listRemoteAllFiles(String path) throws IOException  {
        List<String> list = new ArrayList<String>();
    FTPFile[] files = ftpClient.listFiles(path);
    for(FTPFile file:files){
    if(!file.getName().equals(".")&& !file.getName().equals("..")){/**去掉 . ..*/
    list.add(file.getName());
    }  
            }
    return list;
        }
       
       /**
        * 列出服务器指定路径下的文件目录
        * @param path ..
        * @param fileName ..
        * @return boolean ..
        * @throws IOException 
        */
       public  boolean ifExistFile(String path,String fileName) throws IOException  {
        String ftpFileName = "";
        boolean flag = false;  
    FTPFile[] files = ftpClient.listFiles(path);
    for(FTPFile file:files){
    if(!file.getName().equals(".")&& !file.getName().equals("..")){
    ftpFileName = file.getName();
    if(fileName.equals(ftpFileName)){
    flag = true;
    }
    }  
            }
    return flag;
        }
       
       /**
        * 是否层级遍历
        * @param file ..
        * @param path ..
        * @throws IOException 
        */
       public void disFile(FTPFile file,String path) throws IOException {
          if(file.isDirectory() && !file.getName().equals(".")&& !file.getName().equals("..")){
           listRemoteAllFiles(File.separator +file.getName());
          }
      
        }
        
       
       /**
        * ftp 文件上传
        * @param remotePath ftp Server端 文件存放目录
        * @param remoteFilename 上传文件名
        * @param localPath 传文件本地地址
        * @return boolean ..
        * 
        */
       public boolean upFile(String remotePath, String remoteFilename,String localPath){
        boolean flag = true;                  
        FTPFile[] files;
    try {
    files = ftpClient.listFiles(remotePath);
    /**不存在该目录 创建该目录.**/
        if(files.length == 0){
        mkdir(remotePath);
        }          
        File file = new File(localPath);
        /**本地流.**/
        InputStream fis = new FileInputStream(file);
        /**切换至server端目录.**/
        ftpClient.changeWorkingDirectory(remotePath);
        ftpClient.storeFile(remoteFilename, fis);
    } catch (IOException e) {
    flag = false;
    }            
       return flag;
       }
       
         
       /**
        * ftp 文件下载
        * @param remotePath ftp server 端地址
        * @param localPath 下载到本地的 目录
        * @return boolean ..
        */
       public boolean downFile(String remotePath,String localPath) {     
        boolean flag = true;
        FTPFile[] ftpFiles;
    try {
       /**切换至server端目录.**/
        ftpClient.changeWorkingDirectory(remotePath);
        ftpFiles = ftpClient.listFiles();
        for(FTPFile file:ftpFiles){ 
           /**非文件夹.**/
        if(!file.getName().equals(".")&& !file.getName().equals("..")){
           /**本地指定目录.**/
        File localDir = new File(localPath);
                    if(!localDir.exists()){
                    flag =  localDir.mkdirs();
                    }
                     /**本地对应server的文件名.**/
                    String fileName = localDir + "//" + file.getName();
                    File localFile = new File(fileName);
                    flag = localFile.createNewFile();
                    FileOutputStream fos = new FileOutputStream(localFile); 
                     /**只能下载非文件夹的文件.**/
                    if(!file.isDirectory()){
                     /**写入本地.**/
                    ftpClient.retrieveFile(file.getName(), fos);  // 
                    }else{
                    flag = false;
                    }                 
                    fos.close();  
        }                 
        }
    } catch (IOException e) {
    flag = false;
    }
    return flag;
        }
       
       
       /**
        * 在ftp server 创建目录
        * @param pathname ..
        * @return boolean ..
        */
       public boolean mkdir(String pathname) {  
           /**注意编码,如果不编码文件中文目录无法创建. **/ 
      boolean flag = true;
        String dir;
            try {
                dir = new String(pathname.getBytes(),ftpClient.getControlEncoding());
                try {
                    return  ftpClient.makeDirectory(dir);
                } catch (IOException e) {
                flag = false;
                }
            } catch (UnsupportedEncodingException e) {
            flag = false ;
            }
           return flag;  
       }
    }
  • 相关阅读:
    低代码能做什么?这家服务商用钉钉宜搭打造了智慧医院管理应用
    【深度】阿里巴巴万级规模 K8s 集群全局高可用体系之美
    如何做规划?分享2种思维和4个方法
    配置审计(Config)配合开启OSS防盗链功能
    被解救的代码
    物联网海量时序数据存储有哪些挑战?
    Serverless:这真的是未来吗?(一)
    数据库学习之MySQL进阶
    网页三剑客之CSS
    网页三剑客之HTML
  • 原文地址:https://www.cnblogs.com/leonkobe/p/3319017.html
Copyright © 2011-2022 走看看