今天我們將研究Java文件路徑。 Java文件路徑可以是抽象的、絕對的或規範的。
Java文件路徑
java.io.File
包含三種方法來確定文件路徑,我們將在本教程中探討它們。
getPath()
:此文件路徑方法將抽象路徑名稱返回為字符串。如果使用字符串路徑名稱創建文件對象,它只是返回路徑名稱參數。如果使用URI作為參數,則會刪除協議並返回文件名。getAbsolutePath()
:此文件路徑方法返回文件的絕對路徑。如果使用絕對路徑名稱創建文件,它只是返回路徑名稱。如果使用相對路徑創建文件對象,則系統將以系統相關的方式解析絕對路徑名稱。在UNIX系統上,通過將相對路徑解析為當前用戶目錄,將相對路徑名稱變為絕對路徑。在Microsoft Windows系統上,通過將相對路徑解析為由路徑名稱命名的驅動器的當前目錄(如果有的話);如果沒有,則相對路徑將相對於當前用戶目錄解析為絕對路徑。[getCanonicalPath](https://docs.oracle.com/javase/7/docs/api/java/io/File.html#getCanonicalPath())()
: 此路徑方法返回絕對且唯一的規範化路徑名。如果需要,此方法首先將此路徑名轉換為絕對形式,就像調用getAbsolutePath方法一樣,然後以系統依賴的方式將其映射為其唯一形式。這通常涉及從路徑名中刪除多餘的名稱,例如“。”和“…”,解析符號連結(在UNIX平台上),並將驅動器信號轉換為標准案例(在Microsoft Windows平台上)。
Java文件路徑示例
讓我們通過一個簡單的程序來查看Java中文件路徑的不同情況。
package com.journaldev.files;
import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class JavaFilePath {
public static void main(String[] args) throws IOException, URISyntaxException {
File file = new File("/Users/pankaj/test.txt");
printPaths(file);
// 相對路徑
file = new File("test.xsd");
printPaths(file);
// 复杂的相对路径
file = new File("/Users/pankaj/../pankaj/test.txt");
printPaths(file);
// URI路徑
file = new File(new URI("file:///Users/pankaj/test.txt"));
printPaths(file);
}
private static void printPaths(File file) throws IOException {
System.out.println("Absolute Path: " + file.getAbsolutePath());
System.out.println("Canonical Path: " + file.getCanonicalPath());
System.out.println("Path: " + file.getPath());
}
}
下面的圖像顯示了上述Java文件路徑程序生成的輸出。 輸出是不言自明的。根據輸出,使用規範化路徑最適合避免因相對路徑而引起的任何問題。此外,請注意,Java文件路徑方法不檢查文件是否存在。它們僅對在創建File對象時使用的文件的路徑名進行操作。這就是關於Java中不同類型的文件路徑的全部內容。
您可以从我们的GitHub存储库检查更多的Java IO示例。
Source:
https://www.digitalocean.com/community/tutorials/java-file-path-absolute-canonical