FileSystemWritableFileStream: write() method
Baseline 2025Newly available
Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Secure context: This feature is available only insecure contexts (HTTPS), in some or allsupporting browsers.
Note: This feature is available inWeb Workers.
Thewrite() method of theFileSystemWritableFileStream interface writes content into the file the method is called on, at the current file cursor offset.
No changes are written to the actual file on disk until the stream has been closed.Changes are typically written to a temporary file instead. This method can also be used to seek to a byte point within the stream and truncate to modify the total bytes the file contains.
In this article
Syntax
write(data)Parameters
dataCan be one of the following:
- The file data to write, in the form of an
ArrayBuffer,TypedArray,DataView,Blob, or string. - An object containing the following properties:
typeA string that is one of
"write","seek", or"truncate".dataThe file data to write. Can be an
ArrayBuffer,TypedArray,DataView,Blob, or string. This property is required iftypeis set to"write".positionThe byte position the current file cursor should move to if type
"seek"is used. Can also be set iftypeis"write", in which case the write will start at the specified position.sizeA number representing the number of bytes the stream should contain. This property is required if
typeis set to"truncate".
- The file data to write, in the form of an
Return value
APromise that returnsundefined.
Exceptions
NotAllowedErrorDOMExceptionThrown if
PermissionStatus.stateis notgranted.QuotaExceededErrorThrown if the new size of the file is larger than the original size of the file, and exceeds the browser'sstorage quota.
TypeErrorThrown if
datais undefined, or ifpositionorsizearen't valid.
Examples
The following asynchronous function opens the 'Save File' picker, which returns aFileSystemFileHandle once a file is selected. From this, a writable stream is created using theFileSystemFileHandle.createWritable() method.
A text string is then written to the stream, which is subsequently closed.
async function saveFile() { try { // create a new handle const newHandle = await window.showSaveFilePicker(); // create a FileSystemWritableFileStream to write to const writableStream = await newHandle.createWritable(); // write our file await writableStream.write("This is my file content"); // close the file and write the contents to disk. await writableStream.close(); } catch (err) { console.error(err.name, err.message); }}The following examples show different options that can be passed into thewrite() method.
// just pass in the data (no options)writableStream.write(data);// writes the data to the stream from the determined positionwritableStream.write({ type: "write", position, data });// updates the current file cursor offset to the position specifiedwritableStream.write({ type: "seek", position });// resizes the file to be size bytes longwritableStream.write({ type: "truncate", size });Specifications
| Specification |
|---|
| File System> # api-filesystemwritablefilestream-write> |