我在Java中有一组字符串(String
对象),并希望将它们写入文件,以便以后可以检索它们。
我知道Java使用UTF-16在内部存储字符串。我担心由于格式问题我可能会搞砸,除非我正确地写和读字符串。我不想将String对象原始转储到文件中,因为我希望能够在标准文本编辑器中打开文件来查看它,其中每个字符串以合理的方式显示在它自己的行上(假设没有string包含一个换行符。)
我可以简单地使用PrintWriter
方法使用println(String x)
方法(假设字符串中没有换行符),并结合Scanner类的nextLine()
方法什么时候读回来?这可以保证我得到完全相同的字符串吗?
此外,假设字符串确实包含换行符,那么编写它们的适当方式是什么?我应该过滤掉换行符(用一些特殊的转义代码或类似代码替换它们),并使用println
方法和上面的PrintWriter
一起使用吗?
答案 0 :(得分: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"));