2014-11-20 62 views
0

我有一个从固定位置获取属性的现有方法。此方法还允许我指定覆盖以使用不同的属性文件。我希望能够在保留当前功能的同时指定类路径上的文件。我将如何修改这个来实现这个功能?Java IO对于位于类路径上或离开类路径的文件

protected Properties getProperties(String pathToPropertiesFile) throws IOException { 
    if (pathToPropertiesFile == null) { 
     pathToPropertiesFile = "/etc/machineProperties.properties"; 
    } 

    FileInputStream inputStream = new FileInputStream(pathToPropertiesFile); 

    Properties props = new Properties(); 
    props.load(inputStream); 
    return props; 
} 

目前为止,我发现的所有IO实用程序仅适用于类路径中的文件或具有绝对路径的文件。

+0

听起来像多态的工作。 – 2014-11-20 20:42:30

回答

1

加载类路径中的文本文件。从here获取更多上下文。

InputStream in = this.getClass().getClassLoader() 
           .getResourceAsStream("SomeTextFile.txt"); 
+0

如果您传递不在类路径上的资源的绝对路径,则返回null。 – 2014-11-20 22:12:16

+0

@MikeRylander是的,这就是它在Javadoc https://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String)中所说的内容。这是一个问题,还是你只是记下它? – KyleM 2014-11-20 22:32:46

+0

我需要在读取不在类路径中的文件时保留当前存在的功能。 – 2014-11-20 23:21:46