2015-03-13 137 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")); 
相关问题