zoukankan      html  css  js  c++  java
  • Java 简单的遍历FTP目录并打印

    先去网上找2个jar包:jakarta-oro.jar、commons-net-1.4.1.jar

    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.commons.net.ftp.FTPClient;
    import org.apache.commons.net.ftp.FTPFile;
    
    public class GetFTP {
    
        //用来打印的时候分层
        public String level = "";
    
        public FTPClient loginFTP(String host, String user, String pass)
                throws IOException {
            FTPClient ftp = new FTPClient();
            ftp.setControlEncoding("GBK");
            ftp.connect(host, 21);
            ftp.login(user, pass);
            return ftp;
        }
    
        public void ftpClose(FTPClient ftp) {
            try {
                ftp.logout();
                if (ftp.isConnected()) {
                    ftp.disconnect();
                }
            } catch (IOException e) {
                e.printStackTrace();
                System.exit(1);
            }
        }
    
        public void ListFTP(FTPClient ftpClient, String path) {
            String gbkname;
            InputStream is = null;
            try {
                FTPFile[] files = ftpClient.listFiles(path);
                for (int i = 0; i < files.length; i++) {
                    if (files[i].isDirectory()) {
                        if (!files[i].getName().equals(".")
                                && !files[i].getName().equals("..")) {
                            String tempDir = ftpClient.printWorkingDirectory()
                                    + "/" + files[i].getName();
                            ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);
                            gbkname = files[i].getName();
                            ftpClient.storeFile(new String(gbkname.getBytes("GBK"),
                                    "iso-8859-1"), is);
                            countlevel(ftpClient.printWorkingDirectory());
                            System.out.println(level + gbkname);
                            ftpClient.changeWorkingDirectory(tempDir);
                            ListFTP(ftpClient, tempDir);
                            ftpClient.changeToParentDirectory();
                        }
                    } else {
                        countlevel(ftpClient.printWorkingDirectory());
                        System.out.println(level + files[i].getName());
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
                System.exit(1);
            }
        }
    
        public void countlevel(String path) {
            int n = 0;
            for (int i = 0; i < path.length(); i++) {
                if (path.charAt(i) == '/')
                    n++;
            }
            if (n == 1 && path.length() == 1) {
                level = "";
            } else {
                for (int j = 0; j < n; j++) {
                    level += "--";
                }
            }
        }
    
        public static void main(String[] args) throws Exception {
            GetFTP getFTP = new GetFTP();
            FTPClient ftp = getFTP.loginFTP("192.168.30.77", "test001", "test001");
            getFTP.ListFTP(ftp, ftp.printWorkingDirectory());
            getFTP.ftpClose(ftp);
        }
    
    }
  • 相关阅读:
    JProfiler_SN_8_x key
    java格式化百分比
    获取每月第一天最后一天 java
    java 获取昨天日期
    eclipse git提交代码
    SIT与UAT的分别
    Spring <context:annotation-config/> 说明
    Hibernate日期映射类型
    Oracle查询备注信息
    Log4J入门
  • 原文地址:https://www.cnblogs.com/duelsol/p/2959146.html
Copyright © 2011-2022 走看看