0

根据官方 Java 教程,写入文件的最佳方法是: http ://docs.oracle.com/javase/tutorial/essential/io/file.html#channels

在我使用 NIO.2 创建自己的 FileUtil.write(file, text) 方法之前,我想知道某处是否已经存在这样的方法。

我检查了最新的 apache commons io 和 guava 的来源,但它们都只是创建了一个 FileOutputStream,将字符串转换为字节数组并写入。我很惊讶。

所以我有两个问题:

  1. 我认为 NIO.2 比 FileOutputStream 快。但由于 commons io 和 guava 不使用它们,我想知道这是不是真的。问题是:NIO 比 FileOutputStream 快吗?
  2. 如果 NIO.2 更快,是否有使用它的库?
4

1 回答 1

0

NIO 应该更快,因为它可以使用直接缓冲区。来自 ByteBuffer API:

给定一个直接字节缓冲区,Java 虚拟机将尽最大努力直接在其上执行本机 I/O 操作。也就是说,它将尝试避免在每次调用底层操作系统的本机 I/O 操作之一之前(或之后)将缓冲区的内容复制到(或从)中间缓冲区。

于 2014-01-02T02:15:12.853 回答