2012-05-05 3 views
0

그래서 결국 file1의 이름을 다른 이름으로 변경했습니다. !?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()); 

} 
} 

과 : 그러나 무엇 나를 좌절하게하는 경로가 변경되지 당신이 제발 말해 수 있다는 것입니다 왜 난 항상 작동을 위해 파일 1의 핸들러를 필요로하기 때문에 그것을 처리하는 방법을 여기 내 샘플 코드 나는 그 출력을 얻을 :

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인지 오해하고 있습니다.

File특정 파일의 이름/경로가 아니라 파일 이름/경로를 나타냅니다. 따라서 File을 사용하여 파일의 이름을 바꾸면 File 개체에 저장된 경로 이름이 변경되지 않습니다. File 개체는 변경할 수 없습니다.

둘 다 변경할 수있는 방법이 있습니까?

아니요 File에 인코딩 된 이름/경로는 변경되지 않으며 변경할 수 없습니다. 나를 믿지 않으면 JDK와 함께 제공되는 소스 코드를 확인하십시오.

은 (a File의 경로 상태는 문자열 값 path 속성에 의해 표시된다. 생성자가 할당 path 유일한 장소 및 readObject 방법.)

+0

나서 둘을 변경하는 방법이있다 ? –

+0

'file1.getName()'은 ** test1.java **가 아니기 때문에 ** test2.java.bak ** –

+0

이니 당신이 말한 내용이 아닌 것 같습니다. . 그때 도움이 될 것입니다. –

관련 문제