0

所以我终于把名字改成了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

file1tmpFileyield 不同的路径如何?

4

1 回答 1

4

您误解了 aFile是什么。

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

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

不会。对象中编码的名称/路径File不会更改,也无法更改。如果您不相信我,请查看 JDK 随附的源代码。

(a 的路径名状态File由字符串值path属性表示。分配的唯一位置path是构造函数和readObject方法。)

于 2012-05-05T03:39:09.537 回答