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

时间:2013-10-23 17:45:24

标签: java io

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

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

1 个答案:

答案 0 :(得分:6)

如果您肯定,您将要编写完全相同的字节数,则可以使用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())

您也可以以相同的方式从任意点读取文件,以防您不确切知道需要更换多少数据(例如,您可以填写/截断您正在编写的内容以避免执行某些操作意外可怕)。