2013-04-05 51 views
0

我知道這個問題已經被問了好幾次,但我認爲我的問題不同於別人了一下:的InputStream

String resourcePath = "/Path/To/Resource.jar"; 

File newFile = new File(resourcePath); 
InputStream in1 = this.getClass().getResourceAsStream(resourcePath); 
InputStream in2 = this.getClass().getClassLoader().getResourceAsStream(resourcePath); 

文件,對象NEWFILE是完全沒問題(在.jar文件已經找到,你可以得到它的元數據,如newFile.length()等)

另一方面,InputStream總是返回null。 我知道javadoc說getResourceAsStream()是空的,如果沒有找到這個名字的資源,但文件在那裏! (顯然,因爲它在文件對象中)

任何人都知道爲什麼會發生這種情況,以及我如何解決它,以便我可以在InputStream中獲得.jar文件?

+0

JAR文件中的資源本身不是一個文件。 – EJP 2013-04-05 12:04:49

回答

1

getResourceAsStream()方法不會從文件系統加載文件;它從類路徑加載資源。您可以使用它來加載,例如,打包在您的JAR中的屬性文件。您無法使用它從文件系統加載文件。

因此,如果您的文件駐留在文件系統上,而不是您的JAR文件中,那麼最好使用FileInputStream類。