繁体   English   中英

Java应用程序不读取属性文件而不在IDE中设置工作文件夹

[英]java application not reading properties file without setting the working folder in IDE

我正在使用Netbeans 7.0.1 IDE开发Java应用程序(不是Web应用程序,没有服务器等)。 现在,我从java类中读取任何属性/或任何其他文件时遇到问题。

这是我在做什么

 FileReader f = new FileReader( new File(args[0]) );
 BufferedReader r = new BufferedReader(f);

在参数中,我传递文件名,例如connector.properties(我在与此类相同的包中包含文件)。 该项目在运行时给出以下错误

Can't load: connector.properties : Exception is: connector.properties (The system cannot find the path specified)

为什么我无法读取属性文件? 我的类路径的根源是什么?

当我将'Working Folder' (右键单击项目并选择“运行”部分)设置为仅C/complete/path/to/the/package类的程序包级别时,将读取属性文件。
我想知道为什么需要在Netbeans项目中设置工作文件夹,如何在不设置工作文件夹的情况下读取文件?

这是因为您没有使用类路径读取器来读取属性文件。 您上面的代码读取了一条硬路径。

并且,要从类路径读取属性文件,可以使用apache commons Configuration的文件属性读取器。 那里有几个用于读取属性文件的选项,这些输入文件的流来自例如Classpath。

Properties properties = new Properties();
String propertiesFileName = "config.properties";

InputStream inputStream = getClass().getClassLoader().getResourceAsStream(propertiesFileName);
properties.load(inputStream);

读取属性文件时,此代码将解决问题。

您可以使用this.getClass().getResourceAsStream()获取流,然后使用.load

加载属性。 这很容易扩展到读取类路径中的任何文件。

您应该将属性文件放在项目文件夹中,因为它是默认的工作文件夹,而不是放在要运行的类包中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM