使用FileInputStream从相对路径和绝对路径加载属性

时间:2019-07-15 15:30:43

标签: java java-io properties-file

我编写了一个供他人使用的组件。 组件通过读取属性文件进行自我配置。 属性文件的路径可以由组件的用户指定。如果指定了路径,则可以使用FileInputStream从绝对路径加载这些属性文件,如下所示:

Properties prop = new Properties();
InputStream input = new 
FileInputStream("C:\\me\\prop\\sample.properties");
prop.load(input);

我可以按以下方式读取项目src\main\resources\properties文件夹中的属性文件:

properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(properties\sample.properties));

这些属性嵌入myjar.jar\properties\sample.properties的我的jar中

我可以使用FileInputStream来从相对路径读取属性,以便在属性加载器类中使用两种不同的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用相对路径,但是它将相对于Java应用程序的工作文件夹。在您的IDE(例如Eclipse)中,您可以编写:

new FileInputStream("src/main/resources/properties/sample.properties");

因为工作文件夹是项目的根文件夹。

找不到在jar中嵌入的文件。

如果您请求File对象,则可以指向外部文件或嵌入式资源:

File resource=new File(Ff.class.getResource("/org/json/CDL.class").getFile());