我有文件和文件,想要交换它们。 (In computer programming, the act of swapping two variables refers to mutually exchanging the values of the variables)
File fileA, fileB, temp
fileA.renameTo(temp);
try {
fileB.renameTo(fileA);
try {
// process fileA, B
} finally {
fileA.renameTo(fileB);
}
} finally {
temp.renameTo(fileA);
}
如果存在“硬件”交换操作,我会避免使用临时文件和重命名对。
答案 0 :(得分:1)
通常,没有“原子”文件交换操作的概念。即使有,它也将取决于文件系统。我不相信'常见'文件系统(FAT *,ext *,NTFS等)支持原子交换操作。
当然,Java无法提供原子操作。即使它是,它也可能永远不会在文件系统等工作。
您正在寻找的是那种在Java中找不到家的东西,因为它无法在Java运行的各种支持平台上得到保证。
使用带some file locking的temp是获得相对可靠的交换操作的唯一方法。