Node.js fs.writeFileSync 同步写入文件详解

作者:墨池时间:2026-10-28 17:36:23浏览:644

本文详细介绍 Node.js 中 fs.writeFileSync 方法的用法。该方法是 fs.writeFile 的同步版本,用于将数据同步写入文件。文章涵盖语法结构、参数说明(filename, data, options)、默认值及错误处理,并深入解析其内部源码实现逻辑,包括文件打开、数据写入循环及资源释放过程。

fs.writeFileSync 方法概述

方法概述

fs.writeFileSync 是 fs.writeFile 的同步版本,用于将数据同步写入指定文件。

语法定义

代码示例如下:

fs.writeFileSync(filename, data, [options])

由于该方法属于 fs 模块,使用前需要引入 fs 模块(var fs= require(“fs”) )

接收参数说明

filename (String) 文件名称

data (String | Buffer) 将要写入的内容,可以使字符串 或 buffer数据。

options (Object) option数组对象,包含:

· encoding (string) 可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。

· mode (Number) 文件读写权限,默认值 438

· flag (String) 默认值 ‘w'

fs.writeFileSync 使用示例

使用示例

代码示例如下:

fs.writeFileSync('message.txt', 'Hello Node');

fs.writeFileSync 源码实现分析

源码实现分析

源代码如下:

fs.writeFileSync = function(path, data, options) {
if (!options) {
options = { encoding: 'utf8', mode: 438 /*=0666*/, flag: 'w' };
} else if (util.isString(options)) {
options = { encoding: options, mode: 438, flag: 'w' };
} else if (!util.isObject(options)) {
throw new TypeError('Bad arguments');
  }
assertEncoding(options.encoding);
var flag = options.flag || 'w';
var fd = fs.openSync(path, flag, options.mode);
if (!util.isBuffer(data)) {
data = new Buffer('' + data, options.encoding || 'utf8');
  }
var written = 0;
var length = data.length;
var position = /a/.test(flag) ? null : 0;
try {
while (written < length) {
written += fs.writeSync(fd, data, written, length - written, position);
position += written;
    }
} finally {
fs.closeSync(fd);
  }
};
作者最新文章