如何从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"));**