如果你想要做的事。你們用System.IO.Directory
,但如果你想顯示用於瀏覽一個使用FolderBrowserDialog
對話框的目錄/文件夾?爲什麼.NET在調用目錄「目錄」和「文件夾」中不一致?
爲什麼一個名爲Directory和另一個文件夾?
如果你想要做的事。你們用System.IO.Directory
,但如果你想顯示用於瀏覽一個使用FolderBrowserDialog
對話框的目錄/文件夾?爲什麼.NET在調用目錄「目錄」和「文件夾」中不一致?
爲什麼一個名爲Directory和另一個文件夾?
實際上,目錄和文件夾之間存在差異,並且這兩個術語在此處都正確使用。
目錄是一個文件系統概念。 System.IO.Directory
類以及System.IO
命名空間中的大多數類僅處理文件系統,即。文件,目錄和驅動器。這些有時被統稱爲(以編程方式或僅在語法上)作爲文件系統對象或FSO。
另一方面,文件夾是操作系統的概念。更具體地說,這是一個Windows shell概念。這是一個比目錄更高層次的概念。 Windows外殼通常不直接處理文件系統對象。相反,所有東西都抽象爲命名空間對象。有兩種類型的命名空間的對象:文件夾,這是其他命名空間對象的容器,和文件,哪些不是。 (請注意,名稱空間中的「文件」不一定與磁盤上的文件相關聯,可能是虛擬對象,如打印機)。
大多數名稱空間對象代表文件系統對象,但不是全部做。例如,桌面文件夾是放置所有文件系統對象的%USERPROFILE%\Desktop%
一個虛擬文件夾,以及在%ALLUSERSPROFILE%\Desktop
文件系統對象,和一些非文件系統對象如回收站,我的電腦等
與Windows資源管理器一樣,FolderBrowserDialog
(與Benny幾乎提到的一樣,稱爲SHBrowseForFolder()
)提供了文件夾摘要視圖,而不是文件系統驅動器和目錄的直接視圖。
還應該注意的是,System.IO.Directory
類是ECMA規範基類庫(BCL)的一部分,它旨在與平臺無關。目錄幾乎存在於每個平臺上。 System.Windows.Forms.FolderBrowserDialog
類不是BCL的一部分。它位於特定於Windows的.NET框架中,因此其設計人員可以自由使用Windows概念,例如文件夾。
在另一方面,在.NET框架實際上並不支持命名空間的對象。儘管SHBrowseForFolder()
函數可以返回任何名稱空間文件夾,但FolderBrowserDialog
使用BIF_RETURNONLYFSDIRS
標誌將返回限制爲僅表示文件系統目錄的文件夾。您不能使用FolderBrowserDialog
來允許用戶選擇打印機文件夾或控制面板文件夾。儘管如此,即使它只會檢索到目錄的路徑,它也會按文件夾瀏覽。
大部分現代瀏覽器文件夾借用的的比喻,代表目錄與圖形文件夾圖標,但文件夾的抽象的概念,這裏所提出,是Windows的概念,跨不存在普遍平臺。
可能是因爲編寫System.IO
命名空間的團隊與編寫System.Windows.Forms
的團隊不同。
也許是因爲文件夾在這種情況下是相當的Windows(不僅是?)不是文件系統對象的定義用戶界面的一個術語。
也許一個是由一個Mac小夥子寫的,另一個是由一個PC小夥子寫的。
也許是因爲的FolderBrowserDialog是從Win32平臺SDK ShellBrowseForFolder()
在良好的醇」 DOS的天,移植功能早在20世紀80年代,當DOS 2.0來了,並介紹了將文件放入更多的概念比您的160K軟盤或10MB硬盤上的一個地方,Microsoft將這些「目錄」或「子目錄」稱爲原始shell命令以列出所述文件。
當第一個Windows 1.0的UI來了數年後,說的目錄是由在MS-DOS執行文件夾圖標,這是Windows資源管理器最初稱爲(或多或少)表示。
因此,「文件夾」是爲更多的技術探測「目錄」用戶友好的隱喻。
Commodore Amiga上有一個類似的隱喻,儘管他們選擇了「抽屜」而不是「文件夾」。 – 2009-10-07 13:38:08
最重要的是,微軟試圖增加公文包的概念來保存許多文件夾,但是這個概念在公衆面前失敗了。 +1供歷史參考 – 2009-10-07 13:43:26
什麼是名字? – NinethSense 2009-10-07 08:57:50
「我們稱之爲玫瑰的任何其他名字都會聞到甜味」(莎士比亞),或者更恰當地說:「我們稱之爲任何其他名字的目錄也會起作用」 – RCIX 2009-10-07 09:13:11
可能是因爲「目錄」是低級別的文件系統名稱和「文件夾」是它在UI中稱爲什麼?只是在這裏猜測。 – 2009-10-07 09:21:57