在不同瀏覽器的實現中,源私有文件系統中的條目未必直接映射到用戶的本地文件系統。例如,這些條目可能是存儲在某個數據庫中的對象。這意味著通過文件系統 API 創建的文件或目錄可能無法輕松地從瀏覽器外部訪問。
文件系統 API 的支持情況因瀏覽器和操作系統版本而異。例如:
FileSystemFileHandle 的 getFile() 方法。WebKit 當前支持文件系統標準中的以下四個接口:
FileSystemHandle:表示文件系統中的一個條目。FileSystemDirectoryHandle:用于操作目錄。FileSystemFileHandle:用于操作文件。FileSystemSyncAccessHandle:支持同步文件讀寫操作。接下來,我們通過一些示例來了解如何使用這些接口。
開發者可以通過文件系統 API 訪問源私有文件系統中的條目,從而實現文件的讀取和寫入操作。
通過類似根目錄的 FileSystemDirectoryHandle 對象,可以使用 getDirectoryHandle() 和 getFileHandle() 方法訪問具有特定名稱的子目錄或文件。
文件系統 API 支持對目錄或文件進行移動或重命名操作,這為文件管理提供了更大的靈活性。
要確定某個 FileSystemHandle 是否是現有 FileSystemDirectoryHandle 的后代,并獲取它們的相對路徑,可以使用 resolve() 方法。該方法返回一個數組,其中包含路徑的各個組件名稱。
如果開發者不知道目標文件或目錄的名稱,可以通過 keys()、values() 和 entries() 方法返回的異步迭代器枚舉目錄內容,從而獲取所有子條目。
使用 FileSystemDirectoryHandle 對象,可以通過 removeEntry() 方法按名稱刪除子條目。
文件系統 API 提供了多種方法來讀取文件內容,包括異步和同步操作,以滿足不同的性能需求。
與返回 Promise 的 getFile() 方法不同,read() 方法是同步的,因此性能更高。如果需要實現高效的文件訪問,可以使用 FileSystemSyncAccessHandle。例如:
FileSystemSyncAccessHandle 的同步 write() 方法寫入文件。FileSystemSyncAccessHandle 必須對文件條目具有獨占訪問權限。如果之前的 FileSystemSyncAccessHandle 未正確關閉,則無法在同一條目上創建新的 FileSystemSyncAccessHandle。如果您的 Web 應用程序需要與文件進行交互,建議嘗試新的文件系統 API。它提供了類似于本地文件系統 API 的接口,并且性能經過優化,能夠滿足頻繁文件操作和大文件處理的需求。
原文鏈接: https://webkit.org/blog/12257/the-file-system-access-api-with-origin-private-file-system/