nodejs文件系统之文件写入的方法是什么
更新时间:2023-12-11
Node.js提供了一系列的模块来进行文件系统的操作。在文件系统的读写中,最基本的操作是文件写入。Node.js中使用`fs.writeFile()`方法来进行文件写入。
## 1. `fs.writeFile()` 方法
`fs.writeFile()`方法用于向指定文件写入数据,如果文件不存在则会自动创建该文件。方法的语法如下:
```javascript
fs.writeFile(file, data[, options], callback)
```
该方法接受4个参数:
- `file`(String): 文件名或文件描述符。
- `data`(String|Buffer|Uint8Array): 将要写入文件的数据,可以是字符串或一个Buffer对象。
- `options`(Object): 给参数提供一些附加选项,例如文件编码方式等。默认值是utf8,具体属性如下:
- `encoding` (string):默认值 'utf8',文件的编码格式。
- `mode` (Number):默认值 `0o666`,设置文件的权限。
- `flag` (string):默认值 'w',用于定义文件写入的方式等:
- 'w':覆盖写入。
- 'a':追加写入。
- `callback` (function): 回调函数,无返回值。该函数接受一个异常参数err,用于捕获写入过程中发生的错误。
以下是一个示例:
```javascript
const fs = require('fs');
const data = 'Hello, Node.js';
fs.writeFile('message.txt', data, (err) => {
if (err) throw err;
console.log('文件已保存!');
});
```
运行以上代码时,Node.js 将在程序的目录中创建一个名为message.txt的文件,并将字符串'Hello, Node.js'写入该文件中。
## 2. `fs.createWriteStream()` 方法
除了 `fs.writeFile()`方法之外,Node.js 还提供了另一种写入文件的方法`fs.createWriteStream()`。该方法可以写入大文件,因为它以流的形式写入数据。
该方法的语法如下:
```javascript
const writeStream = fs.createWriteStream(path[, options])
```
该方法接受2个参数:
- `path`(String): 文件的名字或文件描述符。
- `options`(Object): 用于指定默认参数属性,具体属性如下:
- `flags` (String): 可读写标识符,默认值 `'w'`。
- `encoding` (String): 默认值为 null。
- `fd` (Number): 默认值为 null。
- `mode` (Number): 设置文件的模式。默认值为 `0o666`。
- `autoClose` (Boolean): 默认值为 `true`,是否在写完数据后自动关闭文件。
- `start`(Number): 写入文件的起始位置。
以下是一个示例:
```javascript
const fs = require('fs');
const writeStream = fs.createWriteStream('test.txt');
writeStream.write('使用fs.createWriteStream()写入文件内容');
writeStream.end();
writeStream.on('finish', () => {
console.log('写入完成');
});
```
运行以上代码,可在程序目录下生成一个名为`test.txt`的文件,其中写入了字符串`"使用fs.createWriteStream()写入文件内容"`。
## 3. error 事件
`fs.createWriteStream()`方法返回一个可写流(WriteStream)对象,该对象触发一个'error'事件参数,如果写入出错,可以在这个事件中捕获错误并作出相应的处理。示例如下:
```javascript
const writeStream = fs.createWriteStream('test.txt');
writeStream.write('使用fs.createWriteStream()写入文件内容!');
// 错误处理
writeStream.on('error', (err) => {
console.log(err.stack);
});
writeStream.end();
```
## 4. 总结
本文主要介绍了Node.js文件写入常用的两种方法:`fs.writeFile()` 和 `fs.createWriteStream()`。`fs.writeFile()`适用于写入简单的数据,而对于大量数据的写入,使用 `fs.createWriteStream()` 更加方便高效。在使用过程中,需要注意文件的打开和关闭操作,以及对写入过程中可能发生的错误进行处理。