当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js fs.writeFile(file, data[, options], callback)用法及代码示例


fs.writeFile(file, data[, options], callback)

历史
版本变化
v18.0.0

将无效回调传递给 callback 参数现在会抛出 ERR_INVALID_ARG_TYPE 而不是 ERR_INVALID_CALLBACK

v17.8.0

不推荐将具有自己的 toString 函数的对象传递给 string 参数。

v16.0.0

如果返回多个错误,则返回的错误可能是 AggregateError

v15.2.0、v14.17.0

options 参数可能包含 AbortSignal 以中止正在进行的 writeFile 请求。

v14.12.0

data 参数将使用显式 toString 函数对对象进行字符串化。

v14.0.0

data 参数将不再强制输入不受支持的字符串。

v10.10.0

data 参数现在可以是任何 TypedArrayDataView

v10.0.0

callback 参数不再是可选的。不通过它将在运行时抛出TypeError

v7.4.0

data 参数现在可以是 Uint8Array

v7.0.0

callback 参数不再是可选的。不通过它将发出带有 ID DEP0013 的弃用警告。

v5.0.0

file 参数现在可以是文件说明符。

v0.1.29

添加于:v0.1.29


参数

file 是文件名时,异步将数据写入文件,如果文件已存在则替换该文件。 data 可以是字符串或缓冲区。

file 是文件说明符时,行为类似于直接调用fs.write()(推荐)。请参阅下面有关使用文件说明符的说明。

如果 data 是缓冲区,则忽略 encoding 选项。

mode 选项仅影响新创建的文件。有关详细信息,请参阅 fs.open()

import { writeFile } from 'node:fs';
import { Buffer } from 'node:buffer';

const data = new Uint8Array(Buffer.from('Hello Node.js'));
writeFile('message.txt', data, (err) => {
  if (err) throw err;
  console.log('The file has been saved!');
});

如果options 是字符串,则它指定编码:

import { writeFile } from 'node:fs';

writeFile('message.txt', 'Hello Node.js', 'utf8', callback);

在同一个文件上多次使用fs.writeFile()而不等待回调是不安全的。对于这种情况,建议使用 fs.createWriteStream()

类似于fs.readFile - fs.writeFile 是一种方便的方法,它在内部执行多个 write 调用以写入传递给它的缓冲区。对于性能敏感的代码,请考虑使用 fs.createWriteStream()

可以使用 <AbortSignal> 取消 fs.writeFile() 。取消是"best effort",可能还有一些数据需要写入。

import { writeFile } from 'node:fs';
import { Buffer } from 'node:buffer';

const controller = new AbortController();
const { signal } = controller;
const data = new Uint8Array(Buffer.from('Hello Node.js'));
writeFile('message.txt', data, { signal }, (err) => {
  // When a request is aborted - the callback is called with an AbortError
});
// When the request should be aborted
controller.abort();

中止正在进行的请求不会中止单个操作系统请求,而是执行内部缓冲fs.writeFile

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 fs.writeFile(file, data[, options], callback)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。