Java 的 NIO StandardOpenOption.Append 操作的时间复杂度

Time Complexity of Java's NIO StandardOpenOption.Append operation

提问人:shikharraje 提问时间:6/14/2021 最后编辑:user207421shikharraje 更新时间:6/14/2021 访问量:100

问:

当前的文档说:StandardOpenOption.Append

如果打开文件进行 WRITE 访问,则字节将写入文件的末尾而不是开头。

但是,我似乎找不到有关其内部工作原理的任何进一步信息。

我的用例涉及将数据附加到一个大文件中。我目前使用 ,但我的理解是,如果我有某种方法来维护指向文件末尾的指针,我可以轻松地附加到它,而无需先从文件开头遍历到文件末尾。BufferedWriter

所以,我的问题是:实际上以类似的方法工作吗?或者这是否也在内部移动到文件末尾并执行追加?StandardOpenOption.Append

java 文件 io nio

评论

0赞 Thomas 6/14/2021
由于文件的大小已经知道,因此将“光标”移动到文件末尾并附加数据应该很容易。限制因素可能是您的磁盘 I/O,即这些写入的速度有多快(也许还有一些与 OS/FS 相关的因素,但这些因素可能可以忽略不计)。另外,请定义“大”:)
2赞 user207421 6/14/2021
它是 O(1)。操作系统所要做的就是将文件指针设置为末尾而不是开头。不需要遍历文件。
0赞 shikharraje 6/14/2021
@user207421 如果您还能提供信息的来源(并添加您的评论作为答案),我可以批准与这个问题的答案相同。谢谢!
0赞 user207421 6/14/2021
这只是常识。操作系统具有所有必要的信息。为什么需要遍历文件?

答: 暂无答案