如何遍历ftp目录

2025-10-04 08:23:16

1、遍历ftp目录中的文件

2、public static void main(String[] args) throws IOException {

    FTPClient ftpClient = new FTPClient();

    

    try {

        // 连接FTP服务器

        ftpClient.connect("100.101.1.101", 21);//地址,端口号

        // 登录FTP服务器

        ftpClient.login("root", "admin");//用户名,密码

        // 验证FTP服务器是否登录成功

        ftpClient.setControlEncoding("UTF-8");

        int replyCode = ftpClient.getReplyCode();

        

        if (!FTPReply.isPositiveCompletion(replyCode)) {

            System.out.println("登录失败");

            return;

        }else{

            System.out.println("登录成功");

        }

        

        //根目录 登录到ftp后,所在的目录即是根目录,直接即可遍历文件

        FTPFile[] files = ftpClient.listFiles();

        for(FTPFile file: files){

            System.out.println(file.getName());

        }

        

        // 切换目录 想要遍历那个目录的文件,先要切换目录(切换目录实际就是进入目录),进到目录之后再进行遍历

        if(!ftpClient.changeWorkingDirectory("/transactionDetail")){

            System.out.println("切换目录失败");

            return;

        }else{

            FTPFile[] fileDic = ftpClient.listFiles();

            for(FTPFile f: fileDic){

                System.out.println(f.getName());

            }

        }

        

        ftpClient.logout();

    } catch (IOException e) {

        e.printStackTrace();

    } catch (Exception e) {

        e.printStackTrace();

    } finally {

        if (ftpClient.isConnected()) {

            try {

                ftpClient.logout();

            } catch (IOException e) {

        

            }

        }

    }

}

3、读取(下载)ftp中的文件

4、public static void main(String[] args) throws IOException {

    FTPClient ftpClient = new FTPClient();

    OutputStream out = null;

    InputStream in = null;

    try {

        // 连接FTP服务器

        ftpClient.connect("100.101.1.101", 21);

        // 登录FTP服务器

        ftpClient.login("root", "admin");

        // 验证FTP服务器是否登录成功

        ftpClient.setControlEncoding("UTF-8");

        int replyCode = ftpClient.getReplyCode();

        

        if (!FTPReply.isPositiveCompletion(replyCode)) {

            System.out.println("登录失败");

        }else{

            System.out.println("登录成功");

        }

        

        // 切换目录

        if(!ftpClient.changeWorkingDirectory("/book_detail")){

            System.out.println("切换目录失败");

        }else{

            in = new FileInputStream("detail-2020-02-20-xls.zip");//读取目录中的文件

            //创建本地文件

            File tmpFile = new File("D:" + File.separator + "route" + File.separator + "detail-2020-02-20-xls.zip");

            if (!tmpFile.getParentFile().exists()) {

                tmpFile.getParentFile().mkdirs();//创建目录

            }

            if(!tmpFile.exists()) {

                tmpFile.createNewFile();//创建文件

            }

            out = new FileOutputStream(tmpFile);

            

            // 创建字节数组  

            byte[] temp = new byte[1024];

            int length = 0;

            

            // 源文件读取一部分内容  

            while ((length = in.read(temp)) != -1) {

                // 目标文件写入一部分内容 

                out.write(temp, 0, length);

            }

            

            in.close();

            out.close();

            

            System.out.println("写入本地成功");

        }

        

        ftpClient.logout();

    } catch (IOException e) {

        e.printStackTrace();

    } catch (Exception e) {

        e.printStackTrace();

    } finally {

        if (ftpClient.isConnected()) {

            try {

                ftpClient.logout();

            } catch (IOException e) {

        

            }

        }

    }

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢