虛擬文件夾

在電腦領域，虛擬文件夾（Virtual folder）通常指管理一批文件的一個虛擬的文件夾，它不依賴於目錄樹層級中的位置，而是由軟體將數據存儲中的結果合併顯示。這可能是一個資料庫或自定義索引，然後在文件夾視圖中以可視方式呈現它們。虛擬文件夾可以被認為是列出具有特定標記文件的一個視圖，在需要時即時將動態內容模擬為一個文件夾並呈現。在電腦科學中有幾個相似的理念，包括已保存的搜索、已保存的查詢和過濾等。

## 技術

虛擬文件夾為使用者提供一種更方便方法管理一批內容相關的文件。根據使用者所需的特定標準的或所有的文件被聚合到一個虛擬文件夾。虛擬文件夾中的文件不限於硬碟上的某個物理位置，也可能其他形式。事實上，虛擬文件夾中的文件甚至可以並未存儲在硬碟上，它們可以是網路共享或自定義應用資料庫中的內容，例如郵件或其他資料庫。

文件「不能」被存儲在虛擬文件夾中，因為那本質上只是一個文件存儲的搜索查詢。嘗試存儲文件到虛擬文件夾可能遇到多種情況，取決於軟體實現，文件可能被重定向到某個物理存儲空間。

大多數實現都會預先索引硬碟或特定位置上的文件以加速搜索，這樣在搜索開始時可以查詢索引以快速展現和完成搜索任務，避免等待索引和查詢整個文件夾結構。

## 實現

虛擬文件夾可以是作業系統中的一種結構。BeOS包含一種被稱為「已保存查詢」的虛擬文件夾，這對虛擬文件夾在作業系統中的開發產生了影響（包括Mac OS X、Windows和Linux）。虛擬文件夾會在整個文件系統上執行搜索以動態填充內容，及使用子集或已緩存的搜索結果。

## 歷史

### BeOS

此作業系統的首個開發者預覽版發布於1995年10月，包括類似資料庫的功能，使使用者能更方便地管理自己的文件。為了此功能，文件系統會索引特定文件屬性以幫助快速搜索。默認情況下，文件系統會自動索引文件名、大小和最後修改日期，當其他應用程式或使用者告知時還可創建其他屬性的索引。

當使用者執行文件搜索時，在文件夾 "/boot/home/queries" 中會創建一個文件，文件名稱根據查詢內容和搜索的日期時間派生，例如「Name = Western Infirmary - Mar 21, 11:59:40 PM」。搜索的查詢條件存儲在被稱為「qrystr」文件的一個屬性中。當該文件被打開時，文件系統會查詢索引和打開一個跟蹤窗口，保持最新的匹配條件的文件列表。

更多搜索功能被添加到後續的版本中。Release 2引入了編輯已保存查詢的功能，Release 3允許用戶自己定義已保存查詢的名稱在1998年的Release 4之前，所有查詢都會無限期存儲。但從R4開始，BeOS開發者為所有查詢引入了7天的時間限制。如果使用者想將一個查詢保留下來，他們可以在「查找」對話框取消「臨時」標記。

### Mac OS X

BeOS文件系統的領頭開發者之一Dominic Giampaolo曾參與蘋果公司的Mac OS X作業系統並為其添加了虛擬文件夾系統。

2005年4月，蘋果公司發布Mac OS X v10.4，其中就包括被稱為「智能文件夾」的虛擬文件夾。這些文件夾實質上由Spotlight引擎動態更新以包含匹配特定條件的內容。例如，這可以給你帶來一個特殊文件夾，其中包含所有包含關鍵詞「shpadoinkle」且在最近7天曾經編輯的Word文檔。智能文件夾是通過保存一個Spotlight搜索來創建，搜索條件記錄在一個.savedSearch後綴的屬性列表文件中，默認情況下保存在「/Users/username/Library/Saved Searches」文件夾。

在許多Spotlight引擎的應用程式中可以看到「智能文件夾」概念的變種，通常以紫色色調的齒輪圖標標記。例如：郵件中的智能郵箱和通訊錄中的智能組。

在沒有Spotlight的Mac OS X早期版本中，iApps（iTunes和iPhoto）有一個類似的概念，但它們沒有使用系統級的Spotlight引擎。

### Windows

2006年11月，微軟發布Windows Vista，其中允許用戶保存任何搜索查詢為「搜索文件夾」，這就是一種虛擬文件夾。搜索文件夾的設計目的是使用者不需要記住自己的文件存儲在哪裡。搜索文件夾不是物理文件夾，它本質上是一個XML文件，為Windows搜索子系統提供一個已定義查詢的存儲。正因如此，搜索文件夾可以在任何可創建普通文件夾的地方創建。類似的方法Windows XP中也存在，當Windows索引服務啟用時，搜索可以保存為.fnd文件。但是，在Windows XP中的已保存搜索查詢只保存了使用者的搜索條件；使用者仍需指定搜索位置並再次執行搜索，並且搜索結果非動態呈現。

無論何時訪問「搜索文件夾」，它都會返回與已保存搜索查詢相關的結果；結果清單中呈現的是實際的文件和文件夾。搜索查詢的定義可基於許多參數和屬性，包括文件名、指定日期、文件本身內容、相關元數據、文件類型、文件所在位置及其他各種屬性。被稱為「查詢組件」的功能允許搜索者基於其他「搜索文件夾」進一步細分結果。

Windows Vista在默認情況下， references the profile of the user who originally created a saved search as part of the query's scope, which includes the disk partition. This design choice does not prevent saved searches from being shared with other users, but it prevents them from operating on different partitions or user profiles. 雖然使用者可以手動修改已保存搜索的內容將引用範圍改為%USERPROFILE%環境變量， which will enable it to operate on other machines or profiles regardless of the original author or location, 微軟已發布一個「SearchMelt Creator」實用工具允許用戶自動執行此流程。

在Windows Vista的早期開發版本中，這些為默認的使用者配置文件夾預配置的「搜索文件夾」（例如文檔、音樂和圖片）取代了Windows開始菜單上的那些文件夾連結。在Windows文件資源瀏覽器中瀏覽時，導航面板會動態填充與當前查看視圖相關的「搜索文件夾」；舉一個例子，當查看「文檔」文件夾時，導航面板會基於文檔的作者、關鍵詞、類型和最近更改的文檔生成一個「搜索文件夾」。這些預發布版本的作業系統也包括其他虛擬文件夾，搜索都通過主要的「庫」搜索文件夾聚合。微軟的表示這種做法的目標是完全超越傳統的物理文件夾概念，但公司收到的反饋顯示大量使用者對新的方式感到困惑/混亂。尤其是「搜索文件夾」被放在開始菜單導致人們相信它們是具有類似名稱和內容的多個物理文件夾。

基於這種反饋，公司決定恢復在開始菜單上放置物理文件夾的連結，方法類似以前Windows版本的顯示方式，並移除幾個至Windows Vista發布到製造商時可用的「搜索文件夾」。儘管在界面上不那麼明顯，該作業系統仍包含幾個預配置的搜索文件夾：最近的文檔、最近的電子郵件、最近的音樂、最近的圖片和影片、最近的更改以及「與我共享」，這些都是由一個「索引位置」搜索文件夾提供，實現了早期的「庫」概念。

在Windows 7中，虛擬文件夾的概念被顯著實現為「庫」功能。類似「已保存的搜索」，「庫」在本質上只是一個擴展名為 `.library-ms` 的XML文件，功能是收集具有特定屬性的一批文件並在熟悉的文件夾風格界面上顯示它們。庫在文件資源管理器上進行了命名空間擴展，其XML文件可以在各Windows或網路上重用。

### GNOME

在GNOME 2.14中，已保存的搜索是一個虛擬文件夾，內容是Nautilus的搜索結果，內容來自多個後端。這些文件夾的內容在文件夾打開時會動態確定，並在文件被創建或修改時自動更新。

### 其他實現

#### 電子郵件客戶端

虛擬文件夾是電子郵件客戶端的一種常見設計結構。在1991年初，基於Emacs的郵件閱讀器VM在其5.09版本中就已提供虛擬文件夾設計。VM允許用戶使用規則定義虛擬文件夾，這可涉及一個或多個物理文件夾中的郵件內容，並可基於特定選擇條件，如日期、作者、收件人、主題、郵件正文等。虛擬文件夾還可基於以前定義的虛擬文件夾創建，這樣可以根據標準重複篩選Helix Code在2000年創建的Evolution郵件客戶端也納入了虛擬文件夾。可以創建文件夾並自動列出與使用者定義規則匹配的郵件，例如列出所有涉及特定地址的郵件，或者所有包含特定關鍵詞的郵件。Opera網路瀏覽器提供的新郵件客戶端（2002年11月發布測試版，2003年1月發布正式版）同樣提供虛擬文件夾（稱之為訪問點）用於電子郵件的管理。它的虛擬文件夾會自動基於活躍聯繫人、附件和已分配標籤創建。虛擬文件夾也會因執行搜索而創建，並且手動虛擬文件夾可以使用多個邏輯郵件頭完成自動分類（包括使用正則表達式）。Microsoft Outlook 2003添加了類似功能，稱之為「搜索文件夾」。2004年Gmail的首個發布版本中，其所有郵件的管理就基於「標籤」實現的虛擬文件夾。Mozilla Thunderbird也可以創建搜索文件夾，並允許搜索多個電子郵件帳戶。

#### 音樂客戶端

2002年7月，蘋果公司宣布iTunes 3提供「智能播放列表」功能，這可以被認為是一種虛擬文件夾。唯一的區別是搜索不是在文件系統的文件夾結構，而是在其內部的存儲區。微軟在2003年也在Windows XP的Windows Media Player 9中添加類似功能，稱之為「自動播放列表」。