微信登录

核心模块 - fs 模块 - 文件与目录操作

Node.js 《核心模块 - fs 模块 - 文件与目录操作》

在 Node.js 中,fs(File System)模块是一个非常重要的核心模块,它提供了与文件系统进行交互的能力,包括文件的读写、目录的创建与删除等操作。fs 模块有同步和异步两种操作方式,异步操作可以避免阻塞事件循环,提高程序的性能,而同步操作则更适合在初始化阶段或者脚本执行期间使用。

1. 引入 fs 模块

在使用 fs 模块之前,需要先引入它:

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

2. 文件操作

2.1 文件读取

异步读取

  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. });

同步读取

  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. }

2.2 文件写入

异步写入

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

同步写入

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

2.3 文件追加

异步追加

  1. const fs = require('fs');
  2. const appendContent = '这是追加的内容。';
  3. fs.appendFile('example.txt', appendContent, 'utf8', (err) => {
  4. if (err) {
  5. console.error('追加文件时出错:', err);
  6. return;
  7. }
  8. console.log('文件追加成功!');
  9. });

同步追加

  1. const fs = require('fs');
  2. const appendContent = '这是追加的内容。';
  3. try {
  4. fs.appendFileSync('example.txt', appendContent, 'utf8');
  5. console.log('文件追加成功!');
  6. } catch (err) {
  7. console.error('追加文件时出错:', err);
  8. }

2.4 文件删除

异步删除

  1. const fs = require('fs');
  2. fs.unlink('example.txt', (err) => {
  3. if (err) {
  4. console.error('删除文件时出错:', err);
  5. return;
  6. }
  7. console.log('文件删除成功!');
  8. });

同步删除

  1. const fs = require('fs');
  2. try {
  3. fs.unlinkSync('example.txt');
  4. console.log('文件删除成功!');
  5. } catch (err) {
  6. console.error('删除文件时出错:', err);
  7. }

3. 目录操作

3.1 目录创建

异步创建

  1. const fs = require('fs');
  2. fs.mkdir('newDirectory', (err) => {
  3. if (err) {
  4. console.error('创建目录时出错:', err);
  5. return;
  6. }
  7. console.log('目录创建成功!');
  8. });

同步创建

  1. const fs = require('fs');
  2. try {
  3. fs.mkdirSync('newDirectory');
  4. console.log('目录创建成功!');
  5. } catch (err) {
  6. console.error('创建目录时出错:', err);
  7. }

3.2 目录读取

异步读取

  1. const fs = require('fs');
  2. fs.readdir('newDirectory', (err, files) => {
  3. if (err) {
  4. console.error('读取目录时出错:', err);
  5. return;
  6. }
  7. console.log('目录中的文件和文件夹:', files);
  8. });

同步读取

  1. const fs = require('fs');
  2. try {
  3. const files = fs.readdirSync('newDirectory');
  4. console.log('目录中的文件和文件夹:', files);
  5. } catch (err) {
  6. console.error('读取目录时出错:', err);
  7. }

3.3 目录删除

异步删除

  1. const fs = require('fs');
  2. fs.rmdir('newDirectory', (err) => {
  3. if (err) {
  4. console.error('删除目录时出错:', err);
  5. return;
  6. }
  7. console.log('目录删除成功!');
  8. });

同步删除

  1. const fs = require('fs');
  2. try {
  3. fs.rmdirSync('newDirectory');
  4. console.log('目录删除成功!');
  5. } catch (err) {
  6. console.error('删除目录时出错:', err);
  7. }

4. 总结

操作类型 异步方法 同步方法
文件读取 fs.readFile fs.readFileSync
文件写入 fs.writeFile fs.writeFileSync
文件追加 fs.appendFile fs.appendFileSync
文件删除 fs.unlink fs.unlinkSync
目录创建 fs.mkdir fs.mkdirSync
目录读取 fs.readdir fs.readdirSync
目录删除 fs.rmdir fs.rmdirSync

通过 fs 模块,我们可以方便地进行文件和目录的操作。在实际开发中,建议优先使用异步方法,以提高程序的性能和响应能力。同时,要注意错误处理,确保程序的健壮性。