将字符串写入 Java 中的文件并读回
Writing strings to a file in Java and reading them back
我在 Java 中有一组字符串(String
个对象),我想将它们写入一个文件,以便稍后检索它们。
我了解到 Java 使用 UTF-16 在内部存储字符串。我担心我可能会因为格式问题而弄乱某些东西,除非我正确地写入和读取字符串。我不想将原始字符串对象转储到文件中,因为我希望能够在标准文本编辑器中打开文件以查看它,其中每个字符串都以合理的方式显示在自己的行中(假设没有字符串包含换行符)。
我可以简单地将 PrintWriter
class 与 println(String x)
方法结合使用(假设字符串中没有换行符),并结合扫描仪 class读回它们时的 nextLine()
方法?这能保证我得到完全相同的字符串吗?
另外,假设字符串确实包含换行符,那么正确的写法是什么?我是否应该过滤掉换行符(用一些临时转义代码或类似代码替换它们)并使用 println
方法和 PrintWriter
如上所述?
为了完整起见,我用我最终采用的解决方案来回答我自己的问题。回想起来,解决方案非常简单。呸!
为了编写字符串,我使用 BufferedWriter
class,它具有编写字符串的便捷方法。 BufferedWriter的获取方式:
writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(filename), "UTF-8"));
这里我指定了UTF-8编码,基本上所有的都支持。
为了读回字符串,我使用 BufferedReader
class 并确保使用 UTF-8 编码:
reader = new BufferedReader(
new InputStreamReader(
new FileInputStream(filename), "UTF-8"));
我在 Java 中有一组字符串(String
个对象),我想将它们写入一个文件,以便稍后检索它们。
我了解到 Java 使用 UTF-16 在内部存储字符串。我担心我可能会因为格式问题而弄乱某些东西,除非我正确地写入和读取字符串。我不想将原始字符串对象转储到文件中,因为我希望能够在标准文本编辑器中打开文件以查看它,其中每个字符串都以合理的方式显示在自己的行中(假设没有字符串包含换行符)。
我可以简单地将 PrintWriter
class 与 println(String x)
方法结合使用(假设字符串中没有换行符),并结合扫描仪 class读回它们时的 nextLine()
方法?这能保证我得到完全相同的字符串吗?
另外,假设字符串确实包含换行符,那么正确的写法是什么?我是否应该过滤掉换行符(用一些临时转义代码或类似代码替换它们)并使用 println
方法和 PrintWriter
如上所述?
为了完整起见,我用我最终采用的解决方案来回答我自己的问题。回想起来,解决方案非常简单。呸!
为了编写字符串,我使用 BufferedWriter
class,它具有编写字符串的便捷方法。 BufferedWriter的获取方式:
writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream(filename), "UTF-8"));
这里我指定了UTF-8编码,基本上所有的都支持。
为了读回字符串,我使用 BufferedReader
class 并确保使用 UTF-8 编码:
reader = new BufferedReader(
new InputStreamReader(
new FileInputStream(filename), "UTF-8"));