2014-11-20 49 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