Node.js中的文件夹写入怎么实现
创始人
2024-11-21 17:21:56
0次

fs.Dir & fs.Dirent

fs.Dir 是可迭代的目录流的类,fs.Dirent 是遍历 fs.Dir 获得的目录项,可以是文件或目录中的子目录

fs.Dir

  • dir.path:目录的只读路径
  • dir.read():不传入 callabck 函数则返回 Promise,读取迭代器下一个目录项,返回一个 Promise,resolve 后得到 fs.Dirent 或 null(如果没有更多的目录项要读取)
  • dir.close():不传入 callabck 函数则返回 Promise,关闭目录的底层资源句柄

fs.Dirent

  • dirent.name
  • dirent.isDirectory()
  • dirent.isFile()
  • dirent.isSymbolicLink()

fs.opendir

fs.opendir(path[, options], callback) 打开一个目录,返回 fs.Dir 对象

const fs = require('fs/promises');

async function print(path) {
  const dir = await fs.opendir(path);
  for await (const dirent of dir) {
    console.log(dirent.name);
  }
}
print('./').catch(console.error);

可以通过 dir.read() 迭代 dir

const fs = require('fs/promises');

async function print(path) {
  const dir = await fs.opendir(path);
  let dirent = await dir.read();
  while (dirent) {
    console.log(dirent.name);
    dirent = await dir.read();
  }

  dir.close();
}
print('./').catch(console.error);

fs.readdir

fs.readdir(path[, options], callback) 读取目录的内容,回调有两个参数 (err, files),其中 files 是目录中的文件名的数组(不包括 '.' 和 '..')
options

  • encoding:默认值 utf8,如果 encoding 设置为 'buffer',则返回的文件名是 Buffer 对象
  • withFileTypes:默认值 false,设置为 true 后回调函数 files 数组将包含 fs.Dirent 对象
const fs = require('fs/promises');

async function print(path) {
  const files = await fs.readdir(path);
  for (const file of files) {
    console.log(file);
  }
}
print('./').catch(console.error);

fs.mkdir

fs.mkdir(path[, options], callback) 创建目录
options

  • recursive:默认值 false,设置为 true 时候相当命令 mkdir -p 会把不存在的目录创建
  • mode:默认值 0o777,Windows 不支持
// 创建 /tmp/a/apple 目录,无论是否存在 /tmp 和 /tmp/a 目录。
fs.mkdir('/tmp/a/apple', { recursive: true }, err => {
  if (err) throw err;
});

fs.rmdir

fs.rmdir(path[, options], callback) fs.rmdir 用于删除文件夹
options

  • recursive:默认值 false,如果为 true,则执行递归的目录删除。在递归模式中,如果 path 不存在则不报告错误,并且在失败时重试操作
  • retryDelay:默认值 100,出现异常后重试之间等待毫秒数。如果 recursive 选项不为 true,则忽略此选项
  • maxRetries:默认值为 0,表示出现异常后重试的次数,如果遇到 EBUSY、 EMFILE、 ENFILE、 ENOTEMPTY 或 EPERM 错误,则 Node.js 将会在每次尝试时以 retryDelay 毫秒的线性回退来重试该操作。 如果 recursive 为 false,则忽略此选项
const fs = require('fs');

fs.rmdir('./tmp', { recursive: true }, err => console.log);

之前 rmdir 只能删除空的文件夹,现在可以连同文件一起删除了

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...