如何从Java EE Web应用程序访问属性文件?

我在Eclipse中创建了一个动态Web项目。 我在src目录中创建了一个属性文件:

/src/props.properties 

我在调试模式下通过Eclipse启动Tomcat。 现在我想从我的一个POJO中读取属性文件,但是我得到了一个FileNotFoundException。 当前路径似乎是Eclipse路径。

我在网上寻找解决方案,但没有一个能为我工作。 也许我做错了什么。 代码是这样的:

 File file = new File("props.properties"); FileReader reader = new FileReader(file); properties.load(reader); 

我应该如何访问属性文件? 它应该放在哪里?

提前致谢。

如果它是一个Web应用程序,那么属性将部署到WEB-INF / classes,并且可以使用类加载器加载

 InputStream in = {NameOfClassWhereThisisInvoked}.class.getResourceAsStream("/props.properties"); properties.load(in); in.close(); 

实际上,无论是否是webapp,都应该有效。

我假设src被定义为源文件夹

还有另一种方法,如下所示:

 File file = new File(session.getServletContext().getRealPath("/") + "props.properties"); 

您可以提供相对于您的eclipse Web应用程序项目的“WebContent”文件夹的任何路径,而不是“props.properties”。

这是从类路径中的任何位置加载属性文件的正确方法

 private Properties getPropertiesFromClasspath(String propFileName) throws IOException { Properties props = new Properties(); InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(propFileName); if (inputStream == null) { throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath"); } props.load(inputStream); return props; } 

您可以创建一个单例类,以便在首次访问时在内存中加载属性,然后通过静态方法使用它们。 有关这方面的完整示例,请访问http://bharatonjava.wordpress.com/2012/09/12/using-properties-file-in-java-application/

检查这个问题 。 你应该做“src / props.properties”

您的项目是否设置为自动构建? 如果是这样(或者您正在手动构建),请检查props.properties是否出现在项目的输出文件夹中(在Eclipse中,这通常是“bin”,但可能是WebRoot或其他内容,具体取决于项目的设置方式)。

当项目构建时,它应该复制配置文件以及编译的类,JSP等。但是,我认为文件读取器默认使用JVM的主目录作为源代码。 在Eclipse的情况下,这意味着您的props.properties文件必须位于项目根目录中 ,即不是“src”文件夹。

在src文件夹中的Kepp ur Properties文件和以下代码足以读取属性文件

  **File file = new File("./src/config.properties"); FileReader reader = new FileReader(file); prop.load(reader); System.out.println(prop.getProperty("directorypath"));**