[英]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.