File IO(NIO.2):什麼是路徑?

簡介

文件系統以某種形式的媒體(通常爲一個或多個硬盤驅動器)存儲和組織文件,使得它們可以容易地被檢索。目前使用的大多數文件系統將文件存儲在樹形(或分層)結構中。在樹的頂部是一個(或多個)根節點。在根節點下,有文件和目錄(Microsoft Windows中的文件夾)。每個目錄可以包含文件和子目錄,這些文件和子目錄又可以包含文件和子目錄,等等,潛在地幾乎是無限的深度。

什麼是路徑?

下圖顯示了包含單個根節點的示例目錄樹。 Microsoft Windows支持多個根節點。每個根節點映射到一個卷,如C:\或D:\。 Solaris OS支持單根根節點,用斜槓字符表示。


通過文件系統的路徑來識別文件,從根節點開始。 例如,上圖中的statusReport文件通過Solaris操作系統中的以下符號來描述:

/home/sally/statusReport

在Microsoft Windows中,statusReport由以下符號描述:

C:\home\sally\statusReport

用於分離目錄名稱(也稱爲分隔符)的字符特定於文件系統:Solaris OS使用正斜槓(/),Microsoft Windows使用反斜槓斜槓(\)。

相對還是絕對?

路徑是相對的或絕對的。絕對路徑總是包含根元素和找到文件所需的完整目錄列表。例如,/ home / sally / statusReport是絕對路徑。找到文件所需的所有信息都包含在路徑字符串中。 

相對路徑需要與另一路徑組合才能訪問文件。例如,joe / foo是一個相對路徑。沒有更多信息,程序無法在文件系統中可靠地找到joe / foo目錄。

符號鏈接

文件系統對象通常是目錄或文件。每個人都熟悉這些對象。但是一些文件系統也支持符號鏈接的概念。符號鏈接也稱爲符號鏈接或軟鏈接。 
一個符號鏈接是一個專用文件,用作另一個文件的參考。在大多數情況下,符號鏈接對應用程序是透明的,符號鏈接的操作將自動重定向到鏈接的目標。 (指向的文件或目錄被稱爲鏈接的目標。)異常是當符號鏈接被刪除或重命名時,鏈接本身被刪除或重命名,而不是鏈接的目標。
在下圖中,logFile似乎是用戶的常規文件,但它實際上是一個到dir / logs / HomeLogFile的符號鏈接。 HomeLogFile是鏈接的目標。


符號鏈接通常對用戶是透明的。讀取或寫入符號鏈接與讀取或寫入任何其他文件或目錄相同。
解決鏈接的短語意味着將文件系統中的實際位置替換爲符號鏈接。在該示例中,解析logFile將生成dir / logs / HomeLogFile。 
在現實世界的場景中,大多數文件系統都能自由地使用符號鏈接。偶爾,一個不小心創建的符號鏈接可能導致循環引用。當鏈接的目標指向原始鏈接時,會發生循環引用。循環引用可能是間接的:目錄a指向目錄b,它指向目錄c,其中包含一個指向目錄a的子目錄。循環引用可能會導致程序遞歸走路目錄結構時的破壞。但是,這種情況已被考慮,並且不會導致您的程序無限循環。 
下一頁討論了Java編程語言Path類中文件I / O支持的核心。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章