使用java.nio.Files或java.io类创建java.io.BufferedWriter

使用java.nio.Files或java.io类创建java.io.BufferedWriter,java,java-io,bufferedwriter,Java,Java Io,Bufferedwriter,这两者有什么区别 Path path = FileSystems.getDefault().getPath("file.txt"); BufferedWriter bw = Files.newBufferedWriter(path); 及 这两种方法中哪一种更好?Files.newBufferedWriter使用的字符集是UTF8,但新FileWriter将使用Java平台“file.encoding”,它可能是UTF8,也可能不是UTF8。如果您是文件的作者和读者,则最安全的做法是采用UTF

这两者有什么区别

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


这两种方法中哪一种更好?

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

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