Java:替换文件的一部分而不再写入整个文件

Mar*_*sen 2 java io

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

作为一个额外的好处,我需要一个不使用任何功能的解决方案,而不是java 1.4.

Hen*_*ter 6

如果你肯定你将要编写完全相同的字节数,那么你可以用a RandomAccessFile来完成这个(从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())
Run Code Online (Sandbox Code Playgroud)

您也可以以相同的方式从任意点读取文件,以防您不确切地知道需要更换多少数据(例如,您可以填写/截断您正在编写的任何内容,以避免因意外而做出可怕的事情).