我正在为外部排序编写一个合并排序,它一次从文件 A 中读取 2 块数据,将它们合并成一个更大的块,然后将其写入文件 B。之后,我需要读取其中增加的 2 个从文件 B 一次块,将它们合并为 1 个更大的块,并将其写入文件 A。这种切换一直持续到最后所有数据都计为 1 个块。
我尝试在每次迭代后像这样交换标识符:
RandomAccessFile temp = fileA;
fileA = fileB;
fileB = temp;
这要求我使用新的文件目录名称更新 BufferedInput 和 BufferedOutputStreams 并每次都构造它们。
我的 RAM 数量有限,因此除非必须,否则我无法继续创建新对象。每次迭代是否有更好的方法来切换目标文件和源文件?