当前位置: 首页 > 面试题库 >

Java从类路径目录中获取资源列表

丌官飞章
2023-03-14
问题内容

我正在寻找一种从给定的classpath目录中获取所有资源名称的列表的方法,例如method List<String> getResourceNames (String directoryName)

例如,给定一个路径目录x/y/z包含文件a.html,b.html,c.html和子目录dgetResourceNames("x/y/z")应该返回一个List<String>包含下列字符串['a.html', 'b.html', 'c.html', 'd']

它应同时适用于文件系统和jar中的资源。

我知道我可以用Files,JarFilesURLs 编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是getResourceNames什么?SpringApache Commons堆栈都是可行的。


问题答案:

自定义扫描仪

实施自己的扫描仪。例如:

private List<String> getResourceFiles(String path) throws IOException {
    List<String> filenames = new ArrayList<>();

    try (
            InputStream in = getResourceAsStream(path);
            BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
        String resource;

        while ((resource = br.readLine()) != null) {
            filenames.add(resource);
        }
    }

    return filenames;
}

private InputStream getResourceAsStream(String resource) {
    final InputStream in
            = getContextClassLoader().getResourceAsStream(resource);

    return in == null ? getClass().getResourceAsStream(resource) : in;
}

private ClassLoader getContextClassLoader() {
    return Thread.currentThread().getContextClassLoader();
}


 类似资料:
  • 问题内容: 我正在寻找一种从给定的classpath目录中获取所有资源名称的列表的方法,例如。 例如,给定一个路径目录包含文件和子目录应该返回一个List 包含下列字符串: 。 它应该同时适用于文件系统和jar中的资源。 我知道我可以用Files,JarFiles和URLs编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是getResourceName

  • 我正在编写hibernate dto映射osgi包(用于glassfish),这个包没有看到来自类路径的资源。 清单文件: 无法从sqljdbc4.jar访问文件,错误: 但这个库存在于导出的jar文件中。 此外,我无法通过类路径访问hibernate配置文件和映射文件(类未找到和资源未找到异常也)。但下一个代码有效: 我试图调用 在sys out中可以看到: 搜索了捆绑类路径选项,但我的清单似乎

  • 问题内容: 我有以下目录布局: src main Java resources SQL (database script) Spring (configuration) network application 在ServletContextListener类中,我想访问SQL目录下的文件并列出它们。基本上我的问题是路径,因为我知道简而言之列出目录下的文件是: 也许我可以使用Object尝试建立路径

  • 我有以下目录布局: src 主 Java 资源 SQL(数据库脚本) Spring(配置) 是否存在以相对的、非硬编码的方式设置该路径的方法?类似于(如果可能,最好是spring)或如何使用servletContext来指向?

  • 我想从maven资源目录(src/main/resources)中读取我的属性文件。属性文件的路径称为: 该文件名为test。财产。我使用了JSF2.2、Eclipse和Java Web项目,webapp在Tomcat7上运行 我在mavenpom.xml文件中写道: 并在我的java文件中写入:Properties prop=new Properties(); 但是它没有找到属性文件。我可以读出

  • 问题内容: 我有一个Maven项目,并且在一种方法内想在我的资源文件夹中为目录创建路径。这样做是这样的: 生成的看起来像。 stacktrace如下: 在似乎是有效的。之前的部分指向生成的jar文件,之后的部分指向存档的根目录。在创建资源路径之前,我已经使用了此说明。为什么现在我要例外? 问题答案: 您需要先创建文件系统,然后才能访问zip之类的路径 这不会自动完成。 参见http://docs.