FileSystemWritableFileStream:write() 方法
注意:此功能在Web Workers中可用。
write()
方法是 FileSystemWritableFileStream
接口的方法,用于将内容写入调用该方法的文件,写入位置为当前文件光标偏移量。
在流关闭之前,不会将任何更改写入磁盘上的实际文件。更改通常会写入临时文件。此方法也可用于在流中查找字节点并进行截断,以修改文件包含的总字节数。
语法
write(data)
参数
data
-
可以是以下之一
- 要写入的文件数据,可以是
ArrayBuffer
、TypedArray
、DataView
、Blob
或字符串。 - 包含以下属性的对象
type
-
一个字符串,值为
"write"
、"seek"
或"truncate"
之一。 data
-
要写入的文件数据。可以是
ArrayBuffer
、TypedArray
、DataView
、Blob
或字符串。如果type
设置为"write"
,则此属性为必需属性。 position
-
如果使用
"seek"
类型,则当前文件光标应移动到的字节位置。如果type
为"write"
,也可以设置此属性,在这种情况下,写入将从指定位置开始。 size
-
表示流应包含的字节数。如果
type
设置为"truncate"
,则此属性为必需属性。
- 要写入的文件数据,可以是
返回值
一个 Promise
,返回 undefined
。
异常
NotAllowedError
DOMException
-
如果
PermissionStatus.state
不是granted
,则抛出此异常。 QuotaExceededError
DOMException
-
如果文件的新大小大于文件的原始大小,并且超过了浏览器的存储配额,则抛出此异常。
TypeError
-
如果
data
未定义,或者position
或size
无效,则抛出此异常。
示例
以下异步函数打开“保存文件”选择器,选择文件后将返回 FileSystemFileHandle
。然后,使用 FileSystemFileHandle.createWritable()
方法从此处创建可写流。
然后将文本字符串写入流,随后关闭流。
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);
}
}
以下示例显示了可以传递到 write()
方法的不同选项。
// just pass in the data (no options)
writableStream.write(data);
// writes the data to the stream from the determined position
writableStream.write({ type: "write", position, data });
// updates the current file cursor offset to the position specified
writableStream.write({ type: "seek", position });
// resizes the file to be size bytes long
writableStream.write({ type: "truncate", size });
规范
规范 |
---|
文件系统标准 # api-filesystemwritablefilestream-write |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。