org.eclipse.core.filesystem 外掛程式提供用來與任意檔案系統互動的一般 API。 這個 API 類似於 java.io.File,但有一些主要差異:
在檔案系統 API 中,任何給定檔案的路徑都是用階層式的 java.net.URI 來表示。URI 架構 代表檔案系統的類型,URI 路徑元件代表檔案在檔案系統樹狀結構內的位置。 因此,任何給定的階層式 URI 都代表在某個任意檔案系統中的潛在的檔案或目錄。
使用檔案和檔案系統的 API 在 org.eclipse.core.filesystem 套件中。 中央 API 類型是 IFileStore。IFileStore 的每個 實例都代表檔案系統中的單一檔案。 如同 IResource,IFileStore 實例的存在並不代表磁碟中有這個檔案。 您可以利用 IFileStore 實例來建立、刪除、複製、移動或開啟檔案的串流。 如果是給定的 URI,您可以利用靜態方法 EFS.getStore(URI) 來著手於 IFileStore 實例。
IFileSystem 介面可用來查明檔案系統的相關整體事物。 每個 IFileSystem 實例都代表單一 URI 架構,如 "file:"、"ftp:" 等。 您可以利用這個類型來詢問支援的檔案屬性以及檔案系統是否區分大小寫。 另外,您也可以利用這個類型來取得給定 URI 的 IFileStore。
IFileStore 的大部分方法都有一個用來提供額外選項的旗標參數。 您可以在 EFS 類別中找到旗標值。 比方說,如果要開啟附加到檔案的輸出串流,請使用:
IFileStore store = ...//某個檔案儲存庫 store.openOutputStream(EFS.APPEND, null);
如果您需要方法的預設行為,請使用 EFS.NONE。
IFileInfo 介面代表檔案在特定時間點的狀態。 尤其是,您可以得知檔案是否存在、它是不是目錄、它有哪些屬性等等。 您可以修改這項資訊,再將它設回檔案中。 例如以下片段,它會設定目錄的唯讀屬性:
IFileStore store = ...//某個檔案儲存庫 IFileInfo info = store.fetchInfo(); if (info.exists() && info.isDirectory()) { info.setAttribute(EFS.ATTRIBUTE_READ_ONLY, true); store.putInfo(info, EFS.SET_ATTRIBUTES, null); }
這個樣式的 API 可讓您利用對於檔案系統的單一呼叫來取得和變更檔案資訊。 在上述範例中,只有一個提取資訊的檔案系統呼叫,之後,您不需要重新讀取磁碟,便可以在 IFileInfo 物件上執行任意數量的作業。
EFS 類別有若干靜態 Factory 方法,用來取得 IFileStore 和 IFileSystem 實例及各種選項常數和錯誤碼。