java - 如何从 Eclipse 的动态 Web 项目路径中读取文件?

标签 java eclipse file tomcat

我将 Eclipse Kepler 与 Tomcat 7 (localhost) 结合使用,我的项目是一个动态 Web 项目

我有一个类需要加载一些属性文件:

File dir = null;
try {
    dir = new File(globalPropertiesFolder);
} catch (NullPointerException e) {
    log.error("Could not open the specified properties folder: "
            + globalPropertiesFolder, e);
}

if (dir == null) {
    log.error("Could not open the specified properties folder: "
            + globalPropertiesFolder);
    return;
}

FilenameFilter filter = new FilenameFilter() {
    public boolean accept(File dir, String name) {
        boolean res = false; 
        res = !name.endsWith("dynamic.properties");
        if (!name.endsWith(".properties"))
            res = false; 
        return res;
    }
};
String[] children = dir.list(filter);

globalPropertiesFolder 是一个等于“config/properties”的字符串。

我在这个类中有一个 main 用于测试一些方法,当我将它作为 Java Application 运行时,会找到属性,并且 children 变量会填充该文件夹的内容,但是,当我运行它时整个项目服务器 (Tomcat) 找不到属性。

我注意到当我将它作为 Java 应用程序运行时与在服务器上运行它时该文件具有不同的绝对路径 (dir.getAbsolutePath()) 所以最后一个问题是:如何我在使用 Eclipse 和 Tomcat 作为服务器的动态 Web 项目的文件夹中列出文件?如果我至少可以,列出所有这些,然后我可以加载我需要的所有文件。

最佳答案

在独立应用程序和 Web 应用程序中定位文件的可靠方法是通过类路径,如下所示:

    ClassLoader cl = this.getClass().getClassLoader();
    InputStream is = cl.getResourceAsStream("resources/foo.properties");

指定的文件名将通过类加载器搜索,即相对于您应用程序的任何类路径条目。例如,在此示例中,您可以在 src 文件夹中创建 resources/foo.properties,它可以在独立模式和网络模式下找到。 不幸的是,这需要您提前知道相关文件名,即您无法在加载之前列出它们。

关于java - 如何从 Eclipse 的动态 Web 项目路径中读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26983024/

相关文章:

java - 构建 RCP 支持 Eclipse 项目

jquery - 如何将 jQuery 插件拆分为多个文件

java - 将所有文件递归保存在列表中

java - 程序运行时的进度条

java - 创建具有水平环绕和垂直滚动的面板

eclipse - JVM 终止。退出代码 = -1

java - 在 tabris 中创建应用程序

java - 如何在java中为属性文件提供文件锁?

java - 从 Java 将数据发布到 URL 的最佳方式

java - 如何从服务器导入证书并为其生成jks?