2015-11-07 31 views
0

當我運行我的主要方法時,它會創建src/main/resources/sample.txt文件,然後讀取它的內容。每當我運行代碼時,它會給出java.lang.NullPointerException,當涉及到讀取src/main/resources/sample.txt時。但是當我刷新項目時,它讀取的是sample.txt,但不是的新內容,它讀取舊的內容。 看來我需要在讀取文本文件之前在eclipse中刷新java項目。 有沒有辦法在執行時刷新src/main/resources?如何在執行代碼時刷新src/main/resources文件夾?

回答

2

如果您能夠編寫該文件,那麼您應該可以閱讀它。

我的猜測是你寫它使用文件路徑src/main/resources, 但使用的是ClassLoader.getResource,這從classpath target/classes讀讀書吧。

當您刷新項目和Eclipse構建吧,文件src/main/resources被複制到target/classes,使他們在類路徑中的可用資源。

我建議不要在src/main/resources中寫任何東西,因爲這隻有在您從項目目錄執行項目時纔有效。

通常,在程序啓動期間設置ClassLoader的類路徑。根據緩存實現的不同,類加載器通常無法獲取類路徑中文件的更改。您需要創建一個新的ClassLoader並丟棄舊的ClassLoader,但這對於這種情況太複雜了。

要讀取文件,請使用類似於您寫入文件的代碼:如果使用FileWriter,請使用FileReader;如果你使用FileOutputStream,使用FileInputstream等。

+0

是的,你是完全正確的。這是我如何閱讀文本文件TestClass.class.getClassLoader()。getResource(「sample.txt」)。有沒有另一種讀取TestClass.class中的「/anypath/sample.txt」的方法? –

+0

答覆已更新。我不確定這是不是你正在尋找的東西;寫一個文件然後再讀取它是有點奇怪的,因爲你可以將內容保存在內存中。所以如果我關閉了,你能提供一些代碼還是更多的細節? – Kenney

+0

那麼我找到了一種方式File file = new File(「/ home/anypath/sample.txt」); –

相關問題