file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...
file.getpath
File API在Java中非常重要,因為它使文件系統可以訪問Java程序。 盡管Java的文件API豐富,但是使用它們時仍需要了解很多細節。 關于文件路徑的常見查詢程序員之一是getPath() , getCanonicalPath()和getAbsolutePath()方法之間的區別,為什么有三種獲取文件路徑的方法以及如果調用getPath()代替getCanonicalPath()會發生什么情況? 。
順便說一句,在理解getPath(),getAbsolutePath()和getCanonicalPath()之間的區別之前,讓我們了解這些方法背后的概念,即path,absolute path和canonical path之間的區別 。 通常,路徑是到達文件系統中特定文件或目錄的方式,它可以是絕對路徑(也稱為完整路徑),也可以是相對的,例如相對于當前位置。
絕對路徑定義了從文件系統的根目錄(例如Windows中的C:\\或D:\\)以及從/的基于UNIX的操作系統(例如Linux或Solaris)中的路徑。 規范路徑有點棘手,因為所有規范路徑都是絕對的,反之亦然 。 它實際上定義了從文件系統根目錄到文件的唯一絕對路徑。 例如,C://temp/names.txt在Windows中是names.txt的規范路徑,而/home/javinpaul/test/names.txt在Linux中是規范路徑。 另一方面,同一文件可以有很多絕對路徑,包括剛剛看到的規范路徑。 例如,Windows中相同文件的另一個絕對路徑可以是C://temp/./names.txt;。 類似地,在UNIX / home / javinpaul / test /./ names.txt中,是同一文件的另一個絕對路徑。 所以可以這樣說,絕對路徑可能包含元字符之類的。 和..代表當前目錄和父目錄。 在本文的其余部分,我們將通過查看返回給特定文件的值來了解getPath(),getAbsolutePath()和getCanonical()路徑之間的區別。
在UNIX,Windows,Linux或任何文件系統中處理文件時,您通常會聽到術語,絕對,規范和相對路徑。 這是在腳本或程序中引用任何特定文件的三種常用方法。 如果您是一名程序員,則編寫腳本,那么您就會知道使用絕對路徑如何使您的腳本僵化和不靈活,使用絕對路徑實際上是無效的,而眾所周知,腳本中的硬編碼路徑是程序員字典中不良的編碼做法之一。 。 絕對路徑是指向特定文件(例如C:\ temp \ abc.txt)的完整路徑。 絕對路徑名的定義也取決于系統。 在UNIX系統上,如果路徑名的前綴為“ /”,則該路徑名是絕對的。 在Win32系統上,如果路徑名的前綴是驅動器說明符,后跟“ \\”,或者其前綴是“ \\”,則該路徑名是絕對路徑。
例如,我們有兩個目錄:temp和temp1,而test.txt文件位于temp目錄中。
C:\tempC:\temp1在Windows下的Java中,您可能具有以下可能的絕對路徑,它們引用同一文件test.txt。
C:\temp\test.txtC:\temp\test.txt C:\temp\TEST.TXT C:\temp\.\test.txt C:\temp1\..\temp\test.txt另一方面,相對路徑是相對于您所在目錄的目錄,稱為當前目錄。 因此,如果您在上述目錄中,則如果將文件test.txt作為相對文件進行引用,則它假定您所在的目錄相同。當執行../時,它將返回一個目錄,也稱為父目錄。 規范路徑要難一些。 對于初學者,所有規范路徑都是絕對路徑(但并非所有絕對路徑都是規范路徑)。 系統上存在的單個文件可以具有許多引用該文件的路徑,但是只有一個規范路徑。 Canonical為給定文件提供了唯一的絕對路徑。 如何實現這一點的細節可能取決于系統。 對于上面的示例,我們只有一個規范路徑:C:\ temp \ test.txt,請記住,在Java中,您可以使用UNIX風格的正斜杠(/)使用路徑分隔符,甚至可以使用file獲取操作系統路徑分隔符。分隔符系統屬性,是編寫真正與平臺無關的Java應用程序的關鍵 。
一旦您了解了絕對路徑,規范路徑和相對路徑之間的差異,就很容易區分這三種方法,因為它們實際上返回的是路徑,絕對路徑和規范路徑。 簡而言之,這是它們之間的主要區別:
還要記住,以上兩個方法中的每個方法都有一個File等效項,該等效項返回相應的File對象,例如getAbsoluteFile()和getCanonicalFile(),它們返回相同的內容。
下面的示例說明了到同一個文件的方式有很多不同的路徑(和絕對路徑),它們都具有完全相同的規范路徑。 因此,如果您想知道兩個不同的路徑是否指向同一文件,則規范路徑很有用。
import java.io.File;/*** Java program to show difference between path, absolute path and canonical* path related to files in Java. File API provides three methods to* java.io.File class getPath(), getAbsolutePath() and getCanonicalPath() and* this program just explain what those method returns.** @author Javin Paul*/ public class PathDemo {public static void main(String args[]) {System.out.println("Path of the given file :");File child = new File(".././Java.txt");displayPath(child);File parent = child.getParentFile();System.out.println("Path of the parent file :");displayPath(parent);}public static void displayPath(File testFile) {System.out.println("path : " + testFile.getPath());System.out.println("absolute path : " + testFile.getAbsolutePath());try {System.out.println("canonical path : " + testFile.getCanonicalPath());} catch (Exception e) {e.printStackTrace();}}}Output: Path of the given file : path : ..\.\Java.txt absolute path : C:\Users\WINDOWS 8\workspace\Demo\..\.\Java.txt canonical path : C:\Users\WINDOWS 8\workspace\Java.txtPath of the parent file : path : ..\. absolute path : C:\Users\WINDOWS 8\workspace\Demo\..\. canonical path : C:\Users\WINDOWS 8\workspace這就是Java中的getPath(),getAbsolutePath()和getCanonicalPath()之間的區別。 在課程中,我們還學習了路徑,絕對路徑和規范路徑之間的區別。 您需要記住的是,getPath()為您提供了創建File對象的路徑,該路徑可能是相對的,也可能不是相對的。 getAbsolutePath()給出文件的絕對路徑; getCanonicalPath()為您提供文件的唯一絕對路徑。 值得注意的是,可能有大量指向同一文件的絕對路徑,但只有一個規范路徑。
翻譯自: https://www.javacodegeeks.com/2014/08/difference-between-getpath-getcanonicalpath-and-getabsolutepath-of-file-in-java.html
file.getpath
總結
以上是生活随笔為你收集整理的file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想c200一体机(联想C200一体机拆
- 下一篇: java美元兑换,(Java实现) 美元