| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/getDirectory | [Back] [Original] |
Get to know MDN better
This feature is well established and works across many devices and browser versions. Its been available across browsers since March 2023.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Note: This feature is available in Web Workers.
The getDirectory() method of the StorageManager interface is used to obtain a reference to a FileSystemDirectoryHandle object allowing access to a directory and its contents, stored in the origin private file system (OPFS).
getDirectory()
None.
A Promise that fulfills with a FileSystemDirectoryHandle object.
SecurityError DOMExceptionThrown if the browser is not able to map the requested directory to the local OPFS, for example due to storage or memory constraints. Also thrown in some browsers if getDirectory() is called in private browsing mode.
UnknownError DOMExceptionThrown in some browsers if getDirectory() is called in private browsing mode.
The following asynchronous event handler function is contained inside a Web Worker. On receiving a message from the main thread it:
FileSystemDirectoryHandle representing the root of the OPFS using getDirectory(), storing it in the root variable.FileSystemDirectoryHandle.getFileHandle().FileSystemFileHandle.createSyncAccessHandle().ArrayBuffer to contain it.onmessage = async (e) => {
// Retrieve message sent to work from main script
const message = e.data;
// Get handle to draft file
const root = await navigator.storage.getDirectory();
const draftHandle = await root.getFileHandle("draft.txt", { create: true });
// Get sync access handle
const accessHandle = await draftHandle.createSyncAccessHandle();
// Get size of the file.
const fileSize = accessHandle.getSize();
// Read file content to a buffer.
const buffer = new DataView(new ArrayBuffer(fileSize));
const readBuffer = accessHandle.read(buffer, { at: 0 });
// Write the message to the end of the file.
const encoder = new TextEncoder();
const encodedMessage = encoder.encode(message);
const writeBuffer = accessHandle.write(encodedMessage, { at: readBuffer });
// Persist changes to disk.
accessHandle.flush();
// Always close FileSystemSyncAccessHandle if done.
accessHandle.close();
};
Note:
In earlier versions of the spec, close(), flush(), getSize(), and truncate() were wrongly specified as asynchronous methods, and older versions of some browsers implement them in this way. However, all current browsers that support these methods implement them as synchronous methods.
| Specification |
|---|
| File System # dom-storagemanager-getdirectory |
This page was last modified on Jun 18, 2025 by MDN contributors.
StorageManagerDataTransferItem.getAsFileSystemHandle()FileSystemChangeRecordFileSystemDirectoryHandleFileSystemFileHandleFileSystemHandleFileSystemObserverFileSystemSyncAccessHandleFileSystemWritableFileStreamStorageManager.getDirectory()Window.showDirectoryPicker()Window.showOpenFilePicker()Window.showSaveFilePicker()Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |