是否可以替换部分文件内容,而无需将整个文件重写到磁盘。假设我有一个非常大的几千兆字节的文件,我如何替换字节,让我们说位置 100 到 200 而不重写整个文件?
作为额外的奖励,我需要一个不使用任何功能的解决方案,它永远不会超过 java 1.4。
如果您确定要写入完全相同的字节数,则可以使用 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())
您还可以以相同的方式在任意点从文件中读取,以防您不知道需要替换多少数据(例如,您可以填充/截断您正在编写的任何内容,以避免意外做出可怕的事情)。