fs-extra教程

栏目: NodeJs 发布时间:2024-12-24

fs-extra是一个扩展了node.js内置fs模块功能的第三方库,它不仅包含了fs模块的所有方法,还添加了许多实用的功能,如复制、移动、删除文件或目录等。fs-extra的所有方法都支持Promise,使得异步编程变得更加简单和直观。

安装fs-extra

首先,你需要在你的Node.js项目中安装fs-extra。你可以使用npm(Node包管理器)来安装它:

npm install fs-extra

安装完成后,你就可以在你的项目中引入并使用fs-extra了。

引入fs-extra

在你的JavaScript或typescript文件中,你可以通过require或import语句来引入fs-extra:

const fse = require('fs-extra');

或者使用ES6模块语法:

import * as fse from 'fs-extra';

使用fs-extra

复制文件或目录

fs-extra提供了copycopySync方法来异步或同步地复制文件或目录。

// 异步复制
fse.copy('/path/to/source', '/path/to/dest')
  .then(() => console.log('复制成功!'))
  .catch(err => console.error(err));

// 同步复制
try {
  fse.copySync('/path/to/source', '/path/to/dest');
  console.log('复制成功!');
} catch (err) {
  console.error(err);
}

移动文件或目录

movemoveSync方法用于异步或同步地移动文件或目录。

// 异步移动
fse.move('/path/to/source', '/path/to/dest')
  .then(() => console.log('移动成功!'))
  .catch(err => console.error(err));

// 同步移动
try {
  fse.moveSync('/path/to/source', '/path/to/dest');
  console.log('移动成功!');
} catch (err) {
  console.error(err);
}

删除文件或目录

removeremoveSync方法用于异步或同步地删除文件或目录,包括目录中的所有内容。

// 异步删除
fse.remove('/path/to/dir')
  .then(() => console.log('删除成功!'))
  .catch(err => console.error(err));

// 同步删除
try {
  fse.removeSync('/path/to/dir');
  console.log('删除成功!');
} catch (err) {
  console.error(err);
}

读写JSON文件

fs-extra还提供了readJsonreadJsonSyncwriteJsonwriteJsonSync方法来异步或同步地读写JSON文件。

// 异步读取JSON文件
fse.readJson('/path/to/config.json')
  .then(config => console.log(config))
  .catch(err => console.error(err));

// 同步读取JSON文件
try {
  const config = fse.readJsonSync('/path/to/config.json');
  console.log(config);
} catch (err) {
  console.error(err);
}

// 异步写入JSON文件
fse.writeJson('/path/to/config.json', { name: 'fs-extra' })
  .then(() => console.log('写入成功!'))
  .catch(err => console.error(err));

// 同步写入JSON文件
try {
  fse.writeJsonSync('/path/to/config.json', { name: 'fs-extra' });
  console.log('写入成功!');
} catch (err) {
  console.error(err);
}

其他常用方法

  • ensureFileensureFileSync:确保文件存在,如果不存在则创建。
  • ensureDirensureDirSync:确保目录存在,如果不存在则创建。
  • emptyDiremptyDirSync:确保目录为空,如果目录不为空则删除其内容。
  • mkdirsmkdirpmkdirsSyncmkdirpSync:创建多级目录。
  • pathExistspathExistsSync:检查给定路径是否存在。
  • readFilereadFileSync:读取文件内容。
  • writeFilewriteFileSync:写入文件内容。

使用async/await

由于fs-extra的所有异步方法都返回一个Promise,因此你可以使用async/await语法来处理更复杂的异步逻辑。

const processFiles = async () => {
  try {
    await fse.copy('/path/to/source', '/path/to/dest');
    console.log('文件复制完成');
    const data = await fse.readJson('/path/to/config.json');
    console.log('配置读取完成', data);
    // ...更多异步操作
  } catch (err) {
    console.error('出错了', err);
  }
};

processFiles();

通过以上教程,你应该能够掌握fs-extra的基本用法,并在你的Node.js项目中灵活运用它来进行文件操作。

本文地址:https://www.tides.cn/p_node-fs-extra