我正在从文件中读取数字以执行合并排序。归并排序必须作为外部排序执行,因为它是一个很大的数字列表并且可用的主内存非常少。我有一个有效的实现,它使用 BufferedOutputStream 来加速输出,我想对输入流做同样的事情。但是,必须从两个不同的位置读取输入才能执行合并。
本质上,如果我有:
RandomAccessFile File = new RandomAccessFile("File.dat", "rw");
BufferedInputStream Buffer = new BufferedInputStream(
new FileInputStream(File.getFD()));
DataInputStream InputStream = new DataInputStream(Buffer);
而且我使用 读取了一些整数InputStream.readInt()
,但也想使用它File.seek(n)
来访问文件的其他部分,我怎么知道下次何时调用文件以获取更多数据,因此在被要求获取更多数据之前回溯。或者,对于同一个底层文件,是否可以有两个 RandomAccessFiles?