Java文件路徑、絕對路徑和規範路徑

今天我們將研究Java文件路徑。 Java文件路徑可以是抽象的、絕對的或規範的。

Java文件路徑

java.io.File包含三種方法來確定文件路徑,我們將在本教程中探討它們。

  1. getPath():此文件路徑方法將抽象路徑名稱返回為字符串。如果使用字符串路徑名稱創建文件對象,它只是返回路徑名稱參數。如果使用URI作為參數,則會刪除協議並返回文件名。
  2. getAbsolutePath():此文件路徑方法返回文件的絕對路徑。如果使用絕對路徑名稱創建文件,它只是返回路徑名稱。如果使用相對路徑創建文件對象,則系統將以系統相關的方式解析絕對路徑名稱。在UNIX系統上,通過將相對路徑解析為當前用戶目錄,將相對路徑名稱變為絕對路徑。在Microsoft Windows系統上,通過將相對路徑解析為由路徑名稱命名的驅動器的當前目錄(如果有的話);如果沒有,則相對路徑將相對於當前用戶目錄解析為絕對路徑。
  3. [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