重命名文件';java中的路径是否保持不变?

重命名文件';java中的路径是否保持不变?,java,rename,Java,Rename,因此,我最终将file1的名称更改为另一个名称。然而,让我沮丧的是,这条路没有改变!您能告诉我为什么以及如何处理它吗?因为我总是需要file1的处理程序来进行进一步的操作。下面是我的示例代码: import java.io.File; import java.io.IOException; public class TestFile { volatile private static File file1; volatile private static File file2; public

因此,我最终将
file1
的名称更改为另一个名称。然而,让我沮丧的是,这条路没有改变!您能告诉我为什么以及如何处理它吗?因为我总是需要file1的处理程序来进行进一步的操作。下面是我的示例代码:

import java.io.File;
import java.io.IOException;

public class TestFile {
volatile private static File file1;
volatile private static File file2;

public static void main(String[] args) throws IOException {
    file1 = new File("D:\\work\\triangle\\src\\original\\test1.java");
    file2 = new File("D:\\work\\triangle\\src\\original\\test2.java");
    File tmpFile;

    String file2name = file2.getAbsolutePath().toString().replace("\\", "/") + ".bak";
    System.out.println(file2name);

    String file1name = file1.getAbsolutePath().toString()
            .replace("\\", "/");
    System.out.println(file1name);

    tmpFile = new File(file2name);
    if (!file1.renameTo(tmpFile)) {
        System.err.println("file1->file2name-bak");
    }
    System.out.println("file1\t"+file1.getAbsolutePath().toString());
    System.out.println("tmpFile\t"+tmpFile.getAbsolutePath().toString());

}
}
我得到了这些输出:

D:/work/triangle/src/original/test2.java.bak
D:/work/triangle/src/original/test1.java
file1   D:\work\triangle\src\original\test1.java
tmpFile D:\work\triangle\src\original\test2.java.bak

file1
tmpFile
如何产生不同的路径?

您误解了
文件是什么

文件
表示文件名/路径,而不是特定文件的名称/路径。因此,当您使用
文件
重命名文件时,存储在
文件
对象中的路径名不会更改。
文件
对象是不可变的


那么有什么办法可以同时改变它们呢

否。
文件
对象中编码的名称/路径不会更改,也不能更改。如果您不相信我,请检查JDK附带的源代码


文件
的路径名状态由字符串值的
路径
属性表示。分配
路径
的唯一位置是构造函数和
读取对象
方法。)

您误解了
文件
是什么

文件
表示文件名/路径,而不是特定文件的名称/路径。因此,当您使用
文件
重命名文件时,存储在
文件
对象中的路径名不会更改。
文件
对象是不可变的


那么有什么办法可以同时改变它们呢

否。
文件
对象中编码的名称/路径不会更改,也不能更改。如果您不相信我,请检查JDK附带的源代码


(一个
文件
的路径名状态由字符串值的
路径
属性表示。唯一分配
路径
的地方是构造函数和
读取对象
方法。)

那么有什么方法可以同时更改它们吗?看起来不像你说的那样,因为
文件1.getName()
是test1.java,不是test2.java.bakI我认为您需要更详细地解释您试图实现的目标。这样会更容易提供帮助。@WilliamSeemann实际上需要时不时地交换文件名
test1.java
test2.java
。那么有什么办法可以同时更改这两个文件名呢?看起来不像你说的那样,因为
file1.getName()
是test1.java,不是test2.java.bakI我认为您需要更详细地解释您试图实现的目标。这样会更容易提供帮助。@WilliamSeemann实际上需要不时交换文件名
test1.java
test2.java