分享

FTP获取根目录下的所有子文件

 书屋随身带 2012-09-12
/**
 * FTPUtil.java
 * xujy 2012-09-12
 * @version 0.1
 */
package com.miaxis.www.util.ftp;


import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPClientConfig;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
import org.apache.log4j.Logger;
public class FTPUtil1 {
    private static Logger logger = Logger.getLogger(FTPUtil1.class);
    FTPClient ftpClient = null;
    private String path = ""; 
    /**
     * 获取FTPClient对象
     * 
     * @param ftpHost
     *            FTP主机服务器
     * @param ftpPassword
     *            FTP 登录密码
     * @param ftpUserName
     *            FTP登录用户名
     * @param ftpPort
     *            FTP端口 默认为21
     * @return
     */
    public  FTPClient getFTPClient(String ftpHost, String ftpPassword,
            String ftpUserName,int port) {
        try {
            ftpClient = new FTPClient();
           
            ftpClient.setDefaultPort(port); //设置默认端口
            ftpClient.configure(getFtpConfig()); 
            ftpClient.connect(ftpHost);// 连接FTP服务器
            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
ftpClient.enterLocalPassiveMode(); 
// ftpClient.setConnectTimeout(60000);
            boolean isSuccess = ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器
            if(isSuccess){
                logger.info("FTP登录成功。");
            }
            if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) {
                logger.info("未连接到FTP,用户名或密码错误。");
                ftpClient.disconnect();
            } else {
                logger.info("FTP连接成功。");
            }
        } catch (SocketException e) {
            logger.info("FTP的IP地址可能错误,请正确配置。");
            e.printStackTrace();
        } catch (IOException e) {
            logger.info("FTP的端口错误,请正确配置。");
            e.printStackTrace();
        }
        return ftpClient;
    }
     //设置FTP客服端的配置--一般可以不设置 
    private   FTPClientConfig getFtpConfig() { 
            FTPClientConfig ftpConfig = new FTPClientConfig(FTPClientConfig.SYST_UNIX); 
            ftpConfig.setServerLanguageCode(FTP.DEFAULT_CONTROL_ENCODING); 
            return ftpConfig; 
    } 
    public static void  recursion(String root){
     File file = new File(root);
     File[] subFile = file.listFiles();
     for (int i = 0; i < subFile.length; i++) {
      if (subFile[i].isDirectory()) {
       System.out.println("目录: " + subFile[i].getName());
       recursion(subFile[i].getAbsolutePath());
      }else{
       System.out.println("文件: " + subFile[i].getName());
      }
     }
    }

    /** 
     * 列出Ftp服务器上的所有文件和目录 
     */ 
    public  void listRemoteAllFiles(String remotePath) { 
    FTPUtil1 util=new FTPUtil1();
    ftpClient = util.getFTPClient("ftp服务的IP地址", "用户名", "密码",21);//21是端口,根据自己情况而定
        try { 
//                String[] names = ftpClient.listNames(); 
                FTPFile[] files = ftpClient.listFiles(remotePath); 
                for (int i = 0; i < files.length; i++) {   
                if (files[i].isFile()) {   
                System.out.println(files[i].getName());   
                } else if (files[i].isDirectory()) { 
                System.out.println("目录"+files[i].getName());
                listRemoteAllFiles(remotePath + files[i].getName() + "/"); 
                System.out.println("遍历结束");
                    }
                }
        } catch (Exception e) { 
                e.printStackTrace(); 
        } 
    } 
public static void main(String args[]){
FTPUtil1 util=new FTPUtil1();
util.listRemoteAllFiles("/");
    }
    
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多