2015-03-13 131 views
0

我有一組Java字符串(String對象),並且希望將它們寫入文件以便稍後可以檢索它們。將字符串寫入Java文件並將其讀回

我知道Java使用UTF-16在內部存儲字符串。我很擔心,除非我正確地編寫和讀取字符串,否則由於格式化問題我可能會弄髒某些東西。我不想將String對象原始轉儲到文件中,因爲我希望能夠在標準文本編輯器中打開該文件以查看它,其中每個字符串都以合理的方式顯示在其自己的行上(假設沒有字符串包含換行符)。

我可以簡單地使用類與println(String x)方法(假設在字符串中沒有換行符),結合Scanner類的nextLine()方法讀取它們嗎?這將保證我得到完全相同的字符串嗎?

此外,假設字符串包含換行符,那麼寫入它們的適當方式是什麼?我是否應該過濾掉換行符(用一些臨時轉義代碼或類似代碼替換它們),並使用println方法與上面的PrintWriter

+1

你有沒有嘗試過呢?試一試,你自己會找到答案。 – Turtle 2015-03-13 10:19:27

+0

我相信你幾乎回答了你自己的問題,只是嘗試一下代碼,看看它是如何工作的,它是程序員的一部分:) – MSB 2015-03-13 10:21:31

+0

我建議你只需使用ObjectInputStream和ObjectOutputStream而不是將字符串寫入人類可讀的格式(如果沒有人 - 即將閱讀它們,那就是)。代碼會更簡單和更快。 – m0skit0 2015-03-13 10:27:32

回答

1

爲了完整起見,我用我最終通過的解決方案回答了我自己的問題。回想起來,解決方案非常簡單。咄!

要編寫字符串,我使用BufferedWriter類,它具有編寫字符串的方法。的但是BufferedWriter獲得通過:

writer = new BufferedWriter(
      new OutputStreamWriter(
       new FileOutputStream(filename), "UTF-8")); 

在這裏,我已指定其由基本上是所有支持的UTF-8編碼。

要閱讀的字符串後面我用BufferedReader類,並確保使用UTF-8編碼:

reader = new BufferedReader(
      new InputStreamReader(
       new FileInputStream(filename), "UTF-8")); 
相關問題