在 Java 中將相對路徑轉換為絕對路徑
瀏覽人數:629最近更新:
1. 概述
在 Java 中使用文件路徑是一項常見任務,有時,出於各種原因,我們需要將相對路徑轉換為絕對路徑。無論我們是處理文件操作、訪問資源還是導航目錄,了解如何將相對路徑轉換為絕對路徑都是至關重要的。
在本教程中,我們將探索在 Java 中實現此轉換的不同方法。
2. 解決方案
2.1.使用Paths
類
Java 7 中引入的java.nio.file
包提供了Paths
類,它提供了一種操作文件和目錄路徑的便捷方法。
讓我們使用Paths
類將相對路徑轉換為絕對路徑:
String relativePath = "myFolder/myFile.txt";
Path absolutePath = Paths.get(relativePath).toAbsolutePath();
2.2.使用File
類
在 Java 7 之前, java.io.File
類提供了一種將相對路徑轉換為絕對路徑的方法。
以下是如何使用File
類轉換相對路徑的示例:
String relativePath = "myFolder/myFile.txt";
File file = new File(relativePath);
String absolutePath = file.getAbsolutePath();
雖然建議對新項目使用較新的Paths
類,但File
類仍然可用於舊代碼。
2.3.使用FileSystem
類
另一種方法是使用java.nio.file.FileSystem
類,它提供了轉換路徑的方法:
String relativePath = "myFolder/myFile.txt";
Path absolutePath = FileSystems.getDefault().getPath(relativePath).toAbsolutePath();
3. 示例
讓我們用相對路徑測試我們的解決方案:
String relativePath1 = "data/sample.txt";
System.out.println(convertToAbsoluteUsePathsClass(relativePath1));
System.out.println(convertToAbsoluteUseFileClass(relativePath1));
System.out.println(convertToAbsoluteUseFileSystemsClass(relativePath1));
結果將如下所示(結果可能會因所使用的操作系統而異- 本示例使用 Windows):
D:\SourceCode\tutorials\core-java-modules\core-java-20\data\sample.txt
D:\SourceCode\tutorials\core-java-modules\core-java-20\data\sample.txt
D:\SourceCode\tutorials\core-java-modules\core-java-20\data\sample.txt
讓我們嘗試另一個:
String relativePath2 = "../data/sample.txt";
System.out.println(convertToAbsoluteUsePathsClass(relativePath2));
System.out.println(convertToAbsoluteUseFileClass(relativePath2));
System.out.println(convertToAbsoluteUseFileSystemsClass(relativePath2));
這次的結果將如下所示:
D:\SourceCode\tutorials\core-java-modules\core-java-20\..\data\sample.txt
D:\SourceCode\tutorials\core-java-modules\core-java-20\..\data\sample.txt
D:\SourceCode\tutorials\core-java-modules\core-java-20\..\data\sample.txt
如果我們想從路徑中刪除任何冗餘元素(例如“.”或“..”),我們可以使用Path
類的normalize()
方法。
4。結論
將相對路徑轉換為絕對路徑對於 Java 中的文件操作、資源訪問或目錄導航至關重要。
在本教程中,我們探索了實現此轉換的不同方法。
與往常一樣,本文中的示例代碼可以在 GitHub 上找到。
本作品係原創或者翻譯,採用《署名-非商業性使用-禁止演繹4.0國際》許可協議