支援多個讀取器和寫入者,並支援 FileSystemSyncAccessHandle 和 FileSystemWritableFileStream 的專屬寫入器。
多個讀取器和寫入者適用於 FileSystemSyncAccessHandle
來源私人檔案系統 (有時也稱為值區檔案系統) 可讓開發人員存取專為最大讀取和寫入效能最佳化的檔案。這會透過 FileSystemSyncAccessHandle
物件發生。目前,嘗試為同一個檔案項目開啟多個 FileSystemSyncAccessHandle
物件會失敗,並顯示 NoModificationAllowedError
。由於這項限制有限制的情況,因此 Chrome 121 針對 FileSystemFileHandle.createSyncAccessHandle()
方法推出新的 mode
參數,其中包含以下允許的字串值:
"readwrite"
:這是目前的預設值。開啟後,即可允許FileSystemSyncAccessHandle
的所有方法。只能有一個FileSystemSyncAccessHandle
執行個體。"read-only"
:允許多位讀者。開啟後,您只能在FileSystemSyncAccessHandle
上使用類似讀取的方法:read()
、getSize()
和close()
。只要所有FileSystemSyncAccessHandle
執行個體都是唯讀模式,就可以建立多個執行個體。"readwrite-unsafe"
:允許多位寫入者。開啟後,即可允許FileSystemSyncAccessHandle
的所有方法。只要所有FileSystemSyncAccessHandle
執行個體都處於讀寫不安全的模式,就可以建立多個執行個體。
將 "readwrite"
選項保留為預設值來保留目前的行為,一次僅允許一個執行個體。如果網站需要開啟多個 FileSystemSyncAccessHandle
物件,但不需要執行寫入作業,則應使用 "read-only"
選項。最後,最後一個選項 "readwrite-unsafe"
允許多個執行個體,並同時允許讀取和寫入。在這種情況下,如果從多個分頁執行寫入可能會很困難,網站就需要提供專屬的鎖定配置。
const handle1 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
// This will succeed:
const handle2 = await handle.createSyncAccessHandle({mode: 'readwrite-unsafe'});
FileSystemWritableFileStream 的專屬寫入者
與 FileSystemSyncAccessHandle
不同,今天可以為個別檔案項目建立多個 FileSystemWritableFileStream
例項。無法滿足獨家作家的需要。Chrome 121 會在 FileSystemAccessFileHandle.createWritable()
方法中新增選用的 mode
參數,該參數包含下列值:
"exclusive"
模式:一次只能有一位編劇。"siloed"
模式:這是目前的預設值。每個建立的寫入器都有專屬的替換檔案。
const writable1 = await handle.createWritable({mode: 'exclusive'});
// This will fail:
const writable2 = await handle.createWritable();
瀏覽器支援
從 Chrome 121 開始,兩種功能包括多位讀者和作者,FileSystemSyncAccessHandle
以及 FileSystemWritableFileStream
的獨家作者。
加入開發人員試用計畫
如要加入開發人員試用計畫,以便在 Chrome 121 推出前測試這項功能,請將 chrome://flags
中的 #file-system-access-locking-scheme
標記設為「已啟用」。這可讓您在本機上測試這項功能。
特別銘謝
這篇文章是由 Daseul Lee、Nathan Memmott 和 Rachel Andrew 評論。