gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:42:16 25 4
gpt4 key购买 nike

我将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com