在 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
方法在它们之间切换。
我正在为外部排序编写合并排序,它一次从文件 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
方法在它们之间切换。