2015-10-21 116 views
0

很確定這應該很容易,但我無法寫入文件。沒有任何I/O異常拋出。我有一個類似的問題早讀書,我嘗試了上百種不同的方式,直到無法寫入文件 - java

DataInputStream dis = new DataInputStream(reading.class.getResourceAsStream("hello.txt"); BufferedReader input = new BufferedReader(new InputStreamreader(dis));

這個工作!我可以使用掃描儀等從這一點讀取。

FileReader,使File file = new File("hello.txt")不管,沒有任何工作。當它是一個不正確的文件名時,我甚至無法引發任何錯誤。

現在我有同樣的問題,除了寫入文件,但沒有平等的 reading.class.getResourceAsStream("hello.txt");做出/輸出/流。

有誰知道如何獲得「ResourceAsStream」,但作爲輸出流,/或/有人知道我的問題可能是什麼?

我知道很多人在這個網站上有讀/寫的問題,但沒有任何帖子幫助我。 筆記 - 是的,我正在關閉,是的,我正在沖洗,是的,我有代碼寫入文件。

+1

什麼是上下文?你想讀取和寫入'jar'文件嗎? – merlin2011

+0

您可能想要檢查此目錄的權限。此外,如果文件已經存在,您可能還想檢查這個權限。 – Dale

+0

您是否嘗試過使用[FileOutputStream](http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html)? 'FileOutputStream outputStream = new FileOutputStream(String file)' – codiacTushki

回答

0

GetResourceAsStream旨在讀取已分發的資源(例如屬性文件),並與代碼一起打包。不能保證它們處於可寫模式,例如代碼和資源可以分發爲jar或jar-inside-a-WAR-inside-an-EAR ...

請參閱Write to a file stream returned from getResourceAsStream()瞭解更多的討論和解決方法建議,儘管它不是非常推薦的恕我直言。我認爲合理的做法是區分(a)您的不可變代碼分發(b)在運行時可編輯的數據......後者可能駐留在不同的計算機上,具有不同的安全/複製/備份策略等。