zoukankan      html  css  js  c++  java
  • 极简 Node.js 入门

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node

    本文更佳阅读体验:https://www.yuque.com/sunluyong/node/fs-folder

    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 只能删除空的文件夹,现在可以连同文件一起删除了

  • 相关阅读:
    4-MSP430定时器_定时器中断
    关于STM32的外部引脚中断的问题
    关于stm32的正交解码
    红外接收控制灯亮灭
    mack pro常用快捷键
    liunx操作系统安装<一>
    支付宝架构师:从工程师到架构师的成长之路
    maven之setting.xml的配置详解
    分布式之《保证分布式系统数据一致性的6种解决方案》
    Eclipse中jsp、js文件编辑时,卡死现象解决汇总
  • 原文地址:https://www.cnblogs.com/dolphinX/p/13548819.html
Copyright © 2011-2022 走看看