2

是否可以替换部分文件内容,而无需将整个文件重写到磁盘。假设我有一个非常大的几千兆字节的文件,我如何替换字节,让我们说位置 100 到 200 而不重写整个文件?

作为额外的奖励,我需要一个不使用任何功能的解决方案,它永远不会超过 java 1.4。

4

1 回答 1

6

如果您确定要写入完全相同的字节数,则可以使用 aRandomAccessFile来完成此操作(自 Java 1.0 起可用)。只需打开文件,寻找您需要的任何位置,然后用您的新数据覆盖这些字节。

RandomAccessFile f = new RandomAccessFile(new File("C:\\test\\huge.txt"), "rw");
f.seek(100); // Seek ahead
f.write("here is some new stuff".getBytes())

您还可以以相同的方式在任意点从文件中读取,以防您不知道需要替换多少数据(例如,您可以填充/截断您正在编写的任何内容,以避免意外做出可怕的事情)。

于 2013-10-23T17:48:03.070 回答