在磁盘上交换两个文件

时间:2013-09-17 19:57:49

标签: java swap file-management

我有文件和文件,想要交换它们。 (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);
}

如果存在“硬件”交换操作,我会避免使用临时文件和重命名对。

1 个答案:

答案 0 :(得分:1)

通常,没有“原子”文件交换操作的概念。即使有,它也将取决于文件系统。我不相信'常见'文件系统(FAT *,ext *,NTFS等)支持原子交换操作。

当然,Java无法提供原子操作。即使它是,它也可能永远不会在文件系统等工作。

您正在寻找的是那种在Java中找不到家的东西,因为它无法在Java运行的各种支持平台上得到保证。

使用带some file locking的temp是获得相对可靠的交换操作的唯一方法。