StorageManager: getDirectory() method
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).
Syntax
Parameters
Return value
A Promise
that fulfills with a FileSystemDirectoryHandle
object.
Exceptions
SecurityError
DOMException
-
Thrown if the user agent is not able to map the requested directory to the local OPFS.
Examples
The following asynchronous event handler function is contained inside a Web Worker. On receiving a message from the main thread it:
- Gets a
FileSystemDirectoryHandle
representing the root of the OPFS using getDirectory()
, storing it in the root
variable.
- Gets a file handle using
FileSystemDirectoryHandle.getFileHandle()
.
- Creates a synchronous file access handle using
FileSystemFileHandle.createSyncAccessHandle()
.
- Gets the size of the file and creates an
ArrayBuffer
to contain it.
- Reads and writes to the file.
- Persists the changes to disk and closes the synchronous access handle.
onmessage = async (e) => {
const message = e.data;
const root = await navigator.storage.getDirectory();
const draftHandle = await root.getFileHandle("draft.txt", { create: true });
const accessHandle = await draftHandle.createSyncAccessHandle();
const fileSize = accessHandle.getSize();
const buffer = new DataView(new ArrayBuffer(fileSize));
const readBuffer = accessHandle.read(buffer, { at: 0 });
const encoder = new TextEncoder();
const encodedMessage = encoder.encode(message);
const writeBuffer = accessHandle.write(encodedMessage, { at: readBuffer });
accessHandle.flush();
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.
Specifications
Browser compatibility
|
Desktop |
Mobile |
|
Chrome |
Edge |
Firefox |
Internet Explorer |
Opera |
Safari |
WebView Android |
Chrome Android |
Firefox for Android |
Opera Android |
Safari on IOS |
Samsung Internet |
getDirectory |
86 |
86 |
111 |
No |
72 |
15.2 |
109 |
109 |
111 |
74 |
15.2 |
21.0 |
See also