2012-05-05 36 views
0

于是我终于将file1的名字改为另一个名字。 !?但是是什么让我感到沮丧的是,路径保持不变,你能告诉我,为什么和如何处理它,因为我总是需要文件1进一步操作的处理程序下面是我的示例代码:如何在java中重命名文件的路径保持不变?

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 

怎能file1tmpFile产量不同的路径?

回答

4

您是误解File是什么。

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

然后有什么办法可以改变它们吗?

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

(一个File的路径名状态由字符串值path属性来表示。其中path分配是构造的唯一场所,以及readObject方法。)

+0

然后是有任何方式改变它们两? –

+0

这似乎不是你说的,因为'file1.getName()'是** test1.java **,而不是** test2.java.bak ** –

+0

我认为你需要解释你正在试图完成更详细的。那时帮助会更容易。 –