这是我的测试代码。
long fileSize = 1024 * 1024 * 512L;
byte[] bts = new byte[8];
RandomAccessFile randomAccessFile = new RandomAccessFile("f:/test.data", "rw");
randomAccessFile.setLength(fileSize);
randomAccessFile.seek(0);
long time = System.nanoTime();
randomAccessFile.write(bts);
System.out.println("write1 use:" + (System.nanoTime() - time));
randomAccessFile.seek(1024 * 1024 * 256L);
time = System.nanoTime();
randomAccessFile.write(bts);
System.out.println("write2 use:" + (System.nanoTime() - time));
打印
write1 use:181051
write2 use:2029338072
可以看出,写入操作被重复了9次,而第二次比第一次慢了10000倍。
因此,我想问为什么查找会导致文件写入如此缓慢。有没有解决方法?