【问题标题】:How to cycle through files inside a folder knowing only folder name?如何在只知道文件夹名称的文件夹中循环浏览文件?
【发布时间】:2016-06-25 10:53:42
【问题描述】:

我想做一个导入,查看文件夹内部并循环浏览在那里找到的文件,然后导入内容。

在我的项目中,我的文件夹位于 src/main/resources 下,但在实际的 jar 中,它将被打包为根目录下的文件夹(不在资源文件夹内),所以我不知道如何获取文件夹路径只给出它的名字。

我已经尝试通过 getResources 并将文件夹名称作为字符串传递,还尝试了 File folderPath = new File("./import") 之类的东西(使用相对路径),但这也没有用。

建议的帖子和我的帖子之间的区别在于,那里的文件夹路径是已知的(它是一个固定的硬编码位置)我需要根据类加载或类似的东西找到它

下面是我正在使用的代码

public static final String IMPORT_FILES_LOCATION ="import"; //folder name
Enumeration<URL> folderURL = null;
    try {
        folderURL = getClass().getClassLoader().getResources(IMPORT_FILES_LOCATION);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    if (folderURL != null && folderURL.hasMoreElements()) {
        File folderFile = new File(folderURL.nextElement().getPath());
        File[] filesToImport = folderFile.listFiles();
        if(filesToImport.length > 0) {
            for (File fileToImport : filesToImport) {
                System.out.println("import stuff");
            }
        }
    }

有什么想法/建议吗?

谢谢

【问题讨论】:

  • 他的问题稍微复杂一些,因为该文件夹不一定是 HD 上的已知路径,而是类路径资源。 OP,您与getResources() 走在了正确的轨道上。您可以发布您在尝试此操作时使用的代码吗?
  • 正如 mlan 提到的,我的问题有所不同。如果您查看另一篇文章,它知道文件夹路径(它是硬编码的)。我需要一个根据文件夹名称找到该文件夹​​的解决方案
  • 这有什么问题?您是否遇到异常,或者根本没有输出?尝试改用getResource()
  • 文件夹URL 没有元素。如果我使用 getResource 我有同样的问题,该字段仍然为 null 我应该使用“/import”还是“./import”?

标签: java directory


【解决方案1】:

我通过添加存储导入文件夹位置的配置文件属性解决了这个问题。提示用户输入位置,如果该字段为空,则提供默认值(我们有一个用于安装模块的 GUI)

它仍然不能解决最初的问题,但它是一种可行的解决方法。希望对你有帮助

【讨论】:

    猜你喜欢
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2013-04-14
    • 1970-01-01
    • 2020-09-05
    相关资源
    最近更新 更多