簡體   English   中英

在Java中如何重命名文件的路徑保持不變?

[英]How can a renamed file's path remain unchanged in java?

因此,我終於將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

file1tmpFile如何產生不同的路徑?

您誤解了File是什么。

File表示文件名/路徑,而不是特定文件的名稱/路徑。 因此,當您使用File重命名文件時,存儲在File對象中的路徑名不會更改。 File對象是不可變的。

那么有什么辦法可以改變它們兩者嗎?

否。在File對象中編碼的名稱/路徑不會更改,也無法更改。 如果您不相信我,請檢查JDK隨附的源代碼。

File的路徑名狀態由String值的path屬性表示。分配path的唯一位置是構造函數和readObject方法。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM