返回

Node.js 读取写入文件、目录详解:同步异步多文件读写轻松搞定

前端

Node.js 文件操作简介

Node.js 提供了强大的文件系统 API,允许您轻松地读写文件和目录。这些 API 基于 POSIX 标准,因此您可以在大多数类 Unix 系统上使用它们。

Node.js 中的文件操作主要分为两类:同步操作和异步操作。同步操作会阻塞当前线程,直到操作完成。异步操作不会阻塞线程,而是将操作交给系统内核执行,并在操作完成后通知应用程序。

同步文件操作

同步文件操作使用 fs 模块中的同步方法。这些方法以 Sync 结尾,例如 readFileSync()writeFileSync()。同步方法的优点是简单易用,但缺点是可能会阻塞线程,影响程序的性能。

同步读取文件

const fs = require('fs');

const data = fs.readFileSync('file.txt', 'utf8');

console.log(data);

这段代码使用 readFileSync() 方法同步读取文件 file.txt 的内容,并将结果存储在变量 data 中。

同步写入文件

const fs = require('fs');

fs.writeFileSync('file.txt', 'Hello, world!', 'utf8');

console.log('File written successfully.');

这段代码使用 writeFileSync() 方法同步写入文件 file.txt。如果文件不存在,它将被创建。

异步文件操作

异步文件操作使用 fs 模块中的异步方法。这些方法以 Async 结尾,例如 readFileAsync()writeFileAsync()。异步方法不会阻塞线程,而是将操作交给系统内核执行,并在操作完成后通知应用程序。

异步读取文件

const fs = require('fs');

fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
  } else {
    console.log(data);
  }
});

这段代码使用 readFileAsync() 方法异步读取文件 file.txt 的内容。当操作完成时,回调函数 (err, data) 将被调用。如果操作成功,errnulldata 为文件的内容。如果操作失败,err 为错误对象,dataundefined

异步写入文件

const fs = require('fs');

fs.writeFile('file.txt', 'Hello, world!', 'utf8', (err) => {
  if (err) {
    console.error(err);
  } else {
    console.log('File written successfully.');
  }
});

这段代码使用 writeFileAsync() 方法异步写入文件 file.txt。当操作完成时,回调函数 (err) 将被调用。如果操作成功,errnull。如果操作失败,err 为错误对象。

目录操作

Node.js 也提供了对目录的读写支持。这些操作主要集中在 fs 模块中。

读取目录

const fs = require('fs');

fs.readdir('directory', (err, files) => {
  if (err) {
    console.error(err);
  } else {
    console.log(files);
  }
});

这段代码使用 readdir() 方法读取目录 directory 中的文件列表。当操作完成时,回调函数 (err, files) 将被调用。如果操作成功,errnullfiles 为目录中文件的数组。如果操作失败,err 为错误对象,filesundefined

创建目录

const fs = require('fs');

fs.mkdir('directory', (err) => {
  if (err) {
    console.error(err);
  } else {
    console.log('Directory created successfully.');
  }
});

这段代码使用 mkdir() 方法创建目录 directory。当操作完成时,回调函数 (err) 将被调用。如果操作成功,errnull。如果操作失败,err 为错误对象。

总结

本文详细介绍了 Node.js 中的文件和目录的读取和写入操作,包括同步和异步的方式。通过对不同场景的分析,您将学习如何根据需求选择合适的文件操作方法,并轻松完成读写任务。无论您是 Node.js 初学者还是经验丰富的开发者,本文都将为您提供有价值的知识。