微信登录

核心模块 - fs 模块 - 读取与写入文件

Node.js 《核心模块 - fs 模块 - 读取与写入文件》

在 Node.js 中,fs(File System)模块是一个非常重要的核心模块,它提供了一系列用于与文件系统进行交互的 API,允许开发者进行文件的读取、写入、删除、重命名等操作。本文将重点介绍 fs 模块中文件的读取与写入操作。

1. 引入 fs 模块

在使用 fs 模块之前,需要先引入它。引入方式非常简单,使用 require 函数即可:

  1. const fs = require('fs');

2. 文件读取操作

2.1 同步读取文件

同步读取文件会阻塞 Node.js 的事件循环,直到文件读取完成。这种方式适用于需要立即获取文件内容且文件较小的情况。使用 fs.readFileSync 方法进行同步读取。

  1. const fs = require('fs');
  2. try {
  3. const data = fs.readFileSync('example.txt', 'utf8');
  4. console.log('同步读取的文件内容:', data);
  5. } catch (err) {
  6. console.error('读取文件时出错:', err);
  7. }

在上述代码中,fs.readFileSync 方法接收两个参数:第一个参数是要读取的文件路径,第二个参数是文件编码(可选),这里使用 'utf8' 表示以 UTF-8 编码读取文件。如果文件读取成功,会将文件内容存储在 data 变量中并打印出来;如果读取过程中出现错误,会捕获并打印错误信息。

2.2 异步读取文件

异步读取文件不会阻塞 Node.js 的事件循环,适合处理大文件或需要同时处理多个文件的情况。使用 fs.readFile 方法进行异步读取。

  1. const fs = require('fs');
  2. fs.readFile('example.txt', 'utf8', (err, data) => {
  3. if (err) {
  4. console.error('读取文件时出错:', err);
  5. return;
  6. }
  7. console.log('异步读取的文件内容:', data);
  8. });

在上述代码中,fs.readFile 方法接收三个参数:第一个参数是要读取的文件路径,第二个参数是文件编码,第三个参数是一个回调函数。回调函数接收两个参数:err 表示错误信息,如果读取成功则为 nulldata 表示读取到的文件内容。

3. 文件写入操作

3.1 同步写入文件

同步写入文件会阻塞 Node.js 的事件循环,直到文件写入完成。使用 fs.writeFileSync 方法进行同步写入。

  1. const fs = require('fs');
  2. const content = '这是要写入文件的内容。';
  3. try {
  4. fs.writeFileSync('output.txt', content, 'utf8');
  5. console.log('文件同步写入成功。');
  6. } catch (err) {
  7. console.error('写入文件时出错:', err);
  8. }

在上述代码中,fs.writeFileSync 方法接收三个参数:第一个参数是要写入的文件路径,如果文件不存在则会创建该文件;第二个参数是要写入的内容;第三个参数是文件编码(可选)。如果写入成功,会打印成功信息;如果出现错误,会捕获并打印错误信息。

3.2 异步写入文件

异步写入文件不会阻塞 Node.js 的事件循环,适合处理大文件或需要同时处理多个文件的情况。使用 fs.writeFile 方法进行异步写入。

  1. const fs = require('fs');
  2. const content = '这是要写入文件的内容。';
  3. fs.writeFile('output.txt', content, 'utf8', (err) => {
  4. if (err) {
  5. console.error('写入文件时出错:', err);
  6. return;
  7. }
  8. console.log('文件异步写入成功。');
  9. });

在上述代码中,fs.writeFile 方法接收四个参数:第一个参数是要写入的文件路径;第二个参数是要写入的内容;第三个参数是文件编码;第四个参数是一个回调函数,用于处理写入完成后的操作。如果写入过程中出现错误,会在回调函数中捕获并打印错误信息;如果写入成功,会打印成功信息。

4. 总结

操作类型 同步方法 异步方法 适用场景
文件读取 fs.readFileSync fs.readFile 同步:文件较小且需要立即获取内容;异步:大文件或同时处理多个文件
文件写入 fs.writeFileSync fs.writeFile 同步:简单、小文件写入;异步:大文件或同时处理多个文件写入

通过以上介绍,相信你已经对 Node.js 中 fs 模块的文件读取与写入操作有了更深入的了解。在实际开发中,根据具体需求选择合适的同步或异步方法,能够提高代码的性能和效率。