在 Java 中的文件路径之间切换

Switching between file paths in Java

我正在为外部排序编写合并排序,它一次从文件 A 中读取 2 个数据块,将它们合并成一个更大的块,然后将其写入文件 B。在此之后,我需要然后一次从文件 B 中读取这些增加的块中的 2 个,将它们合并为 1 个更大的块,然后将其写入文件 A。这种切换一直持续到最后所有数据都计为 1 个块。

我试过在每次迭代后像这样交换标识符:

RandomAccessFile temp = fileA;
    fileA = fileB;
    fileB = temp;

这需要我使用新的文件目录名称更新 BufferedInput 和 BufferedOutputStreams 并每次构造它们。

我的 RAM 有限,所以除非万不得已,否则我无法继续创建新对象。有没有更好的方法来每次迭代切换目标文件和源文件?

一个简单的通用 Swapable class 应该允许您在两个对象之间交换。

class Swapable<T> {
    final T a;
    final T b;
    boolean useA = true;

    Swapable(T a, T b) {
        this.a = a;
        this.b = b;
    }

    T get() {
        return useA ? a : b;
    }

    void swap() {
        useA = !useA;
    }
}

创建两个 RandomAccessFile 并将它们安装在 Swapable 中。使用 get 方法获取当前文件。使用swap方法在它们之间切换。