【问题标题】:create java.io.BufferedWriter using java.nio.Files or java.io classes使用 java.nio.Files 或 java.io 类创建 java.io.BufferedWriter
【发布时间】:2020-06-24 04:38:07
【问题描述】:

这两者有什么区别?

Path path = FileSystems.getDefault().getPath("file.txt");
BufferedWriter bw = Files.newBufferedWriter(path);

BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("file.txt"));

这两种方法哪个更好?

【问题讨论】:

  • 我相信没有真正的区别,尽管第一个在非常旧的 Java 版本中不可用(也看看Path.of(与FileSystems 解决方案相同))
  • 我会冒险并声明第二个更好,因为更简单。使用第一个的唯一真正原因是,如果您想写入像 ZIP 文件这样的奇怪文件系统。
  • @user207421 用Path.of("file.txt") 替换第一行并在第二行内联-两者都同样简单恕我直言(但可能我也会使用第二行(更习惯了))
  • @user85421 我说的是“更简单全面”。这不仅仅包括一行用户代码:它包括底层实现,尤其是目标文件的数据路径。

标签: java java-io bufferedwriter


【解决方案1】:

Files.newBufferedWriter 使用的字符集是 UTF8,但新的 FileWriter 将使用您的 Java 平台“file.encoding”,它可能是也可能不是 UTF8。如果您是文件的编写者和阅读者,最安全的做法是假设使用 UTF8 版本,或者为任何一种样式提供字符编码,特别是如果该文件可以由另一台计算机系统/在不同区域以不同默认值读取时 字符集。

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 1970-01-01
    • 2015-06-22
    • 2010-12-17
    • 2011-04-17
    • 2011-05-24
    • 2012-04-25
    • 1970-01-01
    相关资源
    最近更新 更多