【问题标题】:Writing strings to a file in Java and reading them back在 Java 中将字符串写入文件并读回
【发布时间】:2015-03-13 10:15:53
【问题描述】:

我在 Java 中有一组字符串(String 对象),想将它们写入文件,以便以后检索它们。

我了解 Java 在内部使用 UTF-16 存储字符串。我担心我可能会因为格式问题而搞砸一些东西,除非我正确地写和读字符串。我不想将字符串对象原始转储到文件中,因为我希望能够在标准文本编辑器中打开文件以查看它,其中每个字符串以合理的方式显示在自己的行上(假设没有字符串包含换行符)。

我可以简单地使用PrintWriter 类和println(String x) 方法(假设字符串中没有换行符),并在读取它们时结合Scanner 类的nextLine() 方法?这能保证我得到完全相同的字符串吗?

进一步,假设字符串确实包含换行符,那么编写它们的适当方式是什么?我是否应该过滤掉换行符(用一些临时转义码或类似代码替换它们)并使用println 方法和PrintWriter 如上所述?

【问题讨论】:

  • 你试过了吗?试一试,你自己就会找到答案。
  • 我相信你已经回答了你自己的问题,只需尝试代码,看看它是如何工作的,这都是成为程序员的一部分:)
  • 我建议您简单地使用ObjectInputStreamObjectOutputStream 而不是以人类可读的格式编写字符串(如果没有人-human- 会阅读它们,那就是)。代码会更简单、更快。
  • 当您使用WriterReader 时,您写入或读取的不是字符而是字节;这意味着您需要编码/解码。
  • 我应该如何通过运行代码来确定答案?我应该在所有字符串上尝试我的代码吗? :)(仅供参考:我不是专业的程序员,而是计算机科学家。)

标签: java string readfile writefile


【解决方案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"));

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 2021-07-13
    • 2015-07-16
    • 2016-05-27
    • 2018-09-20
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多