Node各种不知道的模块

818 阅读3分钟

1.fs模块

readdir()和readdirSync()

该方法将返回一个包含“指定目录下所有文件名称”的数组对象,因此readdir方法只读一层

  • 异步读取readdir()
  • 同步读取readdirSync()

  // fs模块-readdir()和readdirSync()方法
  const fs = require("fs");

  // readdir() 异步读取数据
  fs.readdir("./i18n", (err, files) => {
    if (err) {
      console.error("err", err);
    }
    files.forEach((file) => {
      console.log("file", file);
    });
  });
  /**
   * 打印的结果 :
   * file enUS
   * file index.js
   * file jaJP
   * file zhCN
   */

  // readdirSync() 同步读取数据
  const readdirSync = fs.readdirSync("./i18n");
  console.log(readdirSync);
  //  打印的结果 : [ 'enUS', 'index.js', 'jaJP', 'zhCN' ]

2.createWriteStream 创建可写流

  • [ params:path指定文件的路径 ]
  • [ options:可选,是一个JS对象,可以指定一些选项如 ]

1.flags : 指定用什么模式打开文件

  • w:代表写
  • r:代表读
  • r+、w+、a等 2.encoding:指定打开文件时使用编码格式
  • utf8:默认
  • ascii
  • base64 3.fd : 当你指定了这个属性时,createReadableStream会根据传入的fd创建一个流,忽略path.另外你要是想读取一个文件的特定区域,可以配置start、end属性,指定起始和结束(包含在内)的字节偏移
  • null:默认 4.mode

5.autoClose : 当发生错误或文件读取结束时会自动关闭文件描述符

  • true:默认
/*
@params:path指定文件的路径
@params:options可选,是一个JS对象,可以指定一些选项如:
*/
let option={
    flags: 'w',// 指定用什么模式打开文件,’w’代表写,’r’代表读,类似的还有’r+’、’w+’、’a’等
    encoding: 'utf8',// 指定打开文件时使用编码格式,默认就是“utf8”,你还可以为它指定”ascii”或”base64”
    fd: null,// fd属性默认为null,当你指定了这个属性时,createReadableStream会根据传入的fd创建一个流,忽略path。另外你要是想读取一个文件的特定区域,可以配置start、end属性,指定起始和结束(包含在内)的字节偏移
    mode: 0666,
    autoClose: true// autoClose属性为true(默认行为)时,当发生错误或文件读取结束时会自动关闭文件描述符
}
 let fs = require("fs");
 let ws = fs.createWriteStream("1.txt", {
 flags: "w",
  encoding: "utf8",
  start: 0,
  highWaterMark: 3,
});
let i = 9;
const write = () => {
  let flag = true;
  while (flag && i >= 0) {
    flag = ws.write(i-- + "-"); //往1.txt写入9876543210
    console.log(flag);
  }
};
ws.on("drain", () => {
  //缓存区充满并被写入完成,处于清空状态时触发
  console.log("干了");
  write(); //当缓存区清空后我们在继续写
});
write(); //第一次调用write方法

2.path模块

path:模块包含一系列处理和转换文件路径的工具集,通过require('path')可用来访问这个模块。知识点:对window系统,目录分隔为'',对于UNIX系统,分隔符为'/',针对'..'返回上一级,发现多个斜杠或反斜杠时会替换成一个,/,//,\与\都被统一转换为\

  • path.extname()获取路径中文件后缀名 如果没有'.',则返回空
  • path.normalize(path)  路径解析、得到规范化的格式
  • path.format(pathObject)  该方法用于将一个字符串类型的路径转化为一个路径对象(pathObject)。该路径对象当中包括文件目录,文件名,扩展名等。
var _path = path.extname(__dirname + '/test/util you.mp3'); 
// 结果为:.mp3

var _path = path.normalize(__dirname + '//test/a//b/..//c\\'); 
// 结果为:D:\others\node\examples\test\a\c\

var _path = path.format(path.format({ 
    root: 'E:\\', 
    dir: 'D:\\others\\node\\examples/test',
    base: 'util you.mp4', 
    ext: '.mp4', 
    name: 'util you as me' 
} )); 
// 结果为:D:\others\node\examples/test\util you.mp4