fs-extra
什么是 fs-extra?
- fs-extra adds file system methods that aren't included in the native fs module and adds promise support to the fs methods. It also uses graceful-fs to prevent EMFILE errors. It should be a drop in replacement for fs.
- fs-extra 添加了原生 fs 模块中未包含的文件系统方法,并为 fs 方法添加了 Promise 支持。它还使用 Graceful-fs 来防止 EMFILE 错误。是 fs 的替代品
- 目的是为了解决 mkdirp, rimraf, and ncp 在项目中经常使用的问题
fs-extra 的功能和特点
- Promise 支持:fs-extra 中的所有方法都返回 Promise 对象,使得文件操作可以更加方便地使用 async/await 或 Promise 的方式进行处理,避免了回调地狱的问题。
- 额外的方法:除了 Node.js 原生的 fs 模块提供的方法外,fs-extra 还提供了一些额外的方法,如 copy、emptyDir、ensureFile 等,使得文件和目录的操作更加便捷。
- 错误处理:fs-extra 在处理文件操作时,对错误的处理更加友好和灵活,提供了更多的错误处理选项和方法。
- 跨平台兼容:fs-extra 在不同的操作系统上都能够正常工作,不会受到平台差异的影响。
示例:简化文件操作
javascript
import fs from "fs-extra";
// Async with promises:
fs.copy("./home/AI", "./tmp/mynewfile")
.then(() => console.log("success!"))
.catch((err) => console.error(err));
// 同步拷贝
try {
fs.copySync("./home/AI", "./tmp/copySync/mynewfile");
console.log("success!");
} catch (err) {
console.error(err);
}
其他方法说明
方法名 | 功能描述 | 示例代码 |
---|---|---|
copySync | 同步复制文件或目录 | fs.copySync('source.txt', 'destination.txt'); |
emptyDirSync | 同步清空目录 | fs.emptyDirSync('path/to/directory'); |
ensureFileSync | 确保文件存在,如果不存在则创建空文件 | fs.ensureFileSync('path/to/file'); |
ensureDirSync | 确保目录存在,如果不存在则创建目录 | fs.ensureDirSync('path/to/directory'); |
ensureLinkSync | 确保符号链接存在,如果不存在则创建符号链接 | fs.ensureLinkSync('source', 'destination'); |
ensureSymlinkSync | 确保符号链接存在,如果不存在则创建符号链接 | fs.ensureSymlinkSync('source', 'destination'); |
mkdirpSync | 同步递归创建目录 | fs.mkdirpSync('path/to/directory'); |
mkdirsSync | 同步递归创建目录 | fs.mkdirsSync('path/to/directory'); |
moveSync | 同步移动文件或目录 | fs.moveSync('source.txt', 'destination.txt'); |
outputFileSync | 同步写入文件的内容 | fs.outputFileSync('path/to/file', 'File content'); |
outputJsonSync | 同步写入 JSON 格式的数据到文件 | fs.outputJsonSync('path/to/file.json', data); |
pathExistsSync | 同步判断文件或目录是否存在 | const exists = fs.pathExistsSync('path/to/fileOrDirectory'); |
readJsonSync | 同步读取 JSON 格式的文件内容 | const data = fs.readJsonSync('path/to/file.json'); |
removeSync | 同步删除文件或目录 | fs.removeSync('path/to/file'); fs.removeSync('path/to/directory'); |
writeJsonSync | 同步写入 JSON 格式的数据到文件 | fs.writeJsonSync('path/to/file.json', data); |