2013-06-21 21 views
1

我創建動態使用文件IO文件,getResourceStream無法加載新創建的文件中蝕

FileOutputStream中FOS =新FileOutputStream中( 「sample.txt的」);

並嘗試使用getClass()。getResourceAsStream(「sample.txt」)在另一個類中加載sample.txt,並且無法加載文件,而如果我在eclipse中刷新項目,它能夠加載文件,getResourceStream緩存文件?,我需要的是動態創建文件並加載它們並對它們執行一些操作,我是否錯過了某些內容?

代碼 InputStream爲=的getClass()getClassLoader()的getResourceAsStream( 「sample.txt的」); //絕對路徑

PS:新增在建道路的新創建的文件

+0

你在哪裏存儲文件?重建項目時,它可能會將文件從源文件夾複製到輸出文件夾中。爲什麼你要使用getResourceAsStream,如果你創建它作爲一個文件? –

+0

getResourceAsStream更具可移植性,並且可以在打包到.jar時使用。 – nitind

回答

1

當你運行你的應用程序,你在源代碼樹(通常是/ src)中創建該文件。但是你的bin文件夾是類路徑中的東西(通常是/ bin)。因爲您在eclipse之外創建文件(在另一個java進程中),所以只有當您刷新工作空間時纔會這樣:1)它在源文件夾中顯示爲eclipse,2)然後構建器將其複製到bin文件夾中。

getResourceAsStream()旨在用於保證位於類路徑上的某些內容,例如源樹中的靜態資源。對於動態生成的文件,您需要查找或傳入其他位置,而不使用getResourceAsStream()。

+0

謝謝了:)。將代碼更改爲使用靜態文件而不是動態創建文件 – user11011990