获取FTP服务器某个目录下的所有文件列表

这篇具有很好参考价值的文章主要介绍了获取FTP服务器某个目录下的所有文件列表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近的一个需求为扫描FTP文件夹下的所有文件用于前端下载, 要求多层文件夹内的文件也能被扫到.

多层文件夹一般就要用到递归了, 上代码:

/**
     * 递归获取所有FTP文件
     *
     * @param ftp ftp客户端
     * @param path 路径
     * @param fileList 文件列表
     * @throws IOException 异常
     */
    private void getAllFiles(FTPClient ftp, String path, List<String> fileList) throws IOException {
        // 切换路径
        ftp.changeWorkingDirectory(path);
        FTPFile[] ftpFiles = ftp.listFiles();
        for (FTPFile ftpFile : ftpFiles) {
            if (ftpFile.getType() == 0) {
                // 文件直接添加
                fileList.add(ftpFile.getName());
                continue;
            }
            if (ftpFile.getType() == 1) {
                // 文件夹修改路径进行递归
                String sb = path +
                        "/" +
                        ftpFile.getName();
                getAllFiles(ftp, sb, fileList);
            }
        }
    }

 调用该方法:

        // 从ftp服务器获取文件列表
        // 创建FTPClient对象
        FTPClient ftp = new FTPClient();
        try {
            int reply;
            // 连接前设置字符编码
            ftp.setCharset(StandardCharsets.UTF_8);
            ftp.setControlEncoding("UTF-8");

            // 连接FTP服务器
            // 如果采用默认端口,可以使用ftp.connect(url)的方式直接连接FTP服务器
            ftp.connect(serverIP);
            // 不需要账号密码时匿名登录
            ftp.login("anonymous", null);

            reply = ftp.getReplyCode();
            if (!FTPReply.isPositiveCompletion(reply)) {
                ftp.disconnect();
                throw new ApplicationException("connecting to ftp error.");
            }

            // 设置文件类型为二进制 (必须, 否则文件无法打开, 血的教训)
            ftp.setFileType(FTP.BINARY_FILE_TYPE);

            // 获取文件
//            String path = "/temp/test";
            String path = remotePath;
            List<String> fileList = new ArrayList<>();
            getAllFiles(ftp, path, fileList);

调用完后, fileList中就有指定目录下的所有文件名

 依赖:

        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.7</version>
        </dependency>

定时调用逻辑使用的是PowerJob, 嫌麻烦可以直接使用spring自带的@Scheduled注解.文章来源地址https://www.toymoban.com/news/detail-639049.html

到了这里,关于获取FTP服务器某个目录下的所有文件列表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 获取远程ftp服务器的文件

    最近做医疗的项目,涉及远程访问医院的pacs服务器获取医疗影像数据。由于医院厂商只提供了ftp的相关信息。需要用java开发脚本来自动拉取T-1的数据。 涉及jar包 ### main函数 其中涉及的配置类 ftp client连接server端 通过上面的代码实现自动拉取ftp服务端应用目录下面的文件(也

    2024年02月11日
    浏览(42)
  • java获取某个文件夹下的所有文件

    目录 一.前言 二.获取文件夹下的文件路径 在我们平时编写开发文档的时候, 我们会获取到项目文件中的所有子文件来展示我们的源代码所储存的位置, 获取我们项目下的所有文件路径,  这时我们会如何用Java代码来获取我们项目下的所有文件呢, 今天我们来比编写一下代码 在

    2024年02月12日
    浏览(50)
  • selenium元素定位,获取某个元素下的所有元素

    例: 想要获取所有的li元素: 结果如下 获取到元素后可以直接进行操作: list_tab[2].click() list_tab[5].send_keys(‘123456’)

    2024年02月16日
    浏览(30)
  • 基于linux下的高并发服务器开发(第一章)- 目录操作函数

     (1)int mkdir(const char* pathname,mode_t mode); #include sys/stat.h #include sys/types.h int mkdir(const char *pathname, mode_t mode);     作用:创建一个目录     参数:          pathname: 创建的目录的路径         mode: 权限,八进制的数     返回值:          成功返回0, 失败返回-1  (

    2024年02月16日
    浏览(33)
  • shell 脚本统计 http 文件服务器下指定目录及其子目录下所有文件的大小

    shell脚本如下: 首先 vi calculate_size.sh 写入下入内容 执行 sh calculate_size.sh http://example.com/some/dir/ 即可统计 http 文件服务器http://example.com/some/dir/ 中 dir 目录及其子目录下所有文件的大小。

    2024年02月15日
    浏览(47)
  • vue3 + fastapi 实现选择目录所有文件自定义上传到服务器

    大家好,我是yma16,本文分享关于vue3 + fastapi 实现选择目录文件上传到服务器指定位置。 vue3系列相关文章: 前端vue2、vue3去掉url路由“ # ”号——nginx配置 csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板 认识vite_vue3 初始化项目到打包 python_selenuim获取csdn新星

    2024年02月08日
    浏览(39)
  • 服务器获取Jar包运行目录

    System.getProperty(\\\"user.dir\\\") 可直接获取Jar包启动运行的目录 (/usr/local/test/app.jar — /usr/local/test) 与方法1不同,获取的是jar包真实运行的路径(!/BOOT-INF/classes!/) 3.总结 ProtectionDomain 和 CodeSource 类的主要作用是获取 当前运行应用程序 的 JAR 包路径。与直接使用 System.getProperty(“

    2024年02月04日
    浏览(24)
  • 华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu

    华为云云耀云服务器L实例评测 | 实例评测使用之硬件参数评测:华为云云耀云服务器下的 Linux 磁盘目录分析神器 ncdu 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么 华为云云耀云服务器和上一代

    2024年02月07日
    浏览(61)
  • [通知]rust跟我学八:获取指定目录下的所有文件全路径 已上线

    大家好,我是带剑书生,开源库get_local_info的作者。目前我的付费专栏已经上线,用于介绍在实现get_local_info过程中,遇到该问题所使用的解决方法,喜欢的朋友可以去订阅了,19.9元,非常便宜的价格,做开源不容易。希望能帮助您在学习Rust时,少走弯路,尽快进入项目。

    2024年01月19日
    浏览(42)
  • Ftp服务器、 Samba服务器、NFS服务器的区别

    根据使用的方式来看,可以分为3种类别的文件服务器:ftp服务器(ftp/tftp)、 Samba服务器、NFS服务器。ftp的客户可以是任意平台,samba是专门针对windows客户,而NFS则是面向linux/unix用户的。下面是三种服务器的对比情况: 各个服务器的配置 NFS服务器: NFS是SUN Microsystem公司开发

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包