node.js之文件系统fs---笔记三

一句话理解什么是文件系统fs?

node.js中的内置模块,可以对计算机中的文件进行 [ 增删改查 ] 等操作

如何理解文件系统中的同步异步?

简单理解为两种不同的形式 得到的结果是一样的,同步是链式执行 异步是分支执行,,一般情况下只允许操作一次,结构上也有区别 具体看以下内容:

 **注意:无论是写入、读取还是删除  都需要先引入fs模块**
 **一般格式  let 变量名 = require('fs'),一般情况下变量名都可以写成fs**
 flag : w  写,覆盖操作
 flag : a  追加
 flag : r  读取
 了解的知识:0x ==》 十六进制  0b ==》二进制  0o ==》 八进制

1,文件系统的写入有两种:

在简单写入的格式:

 同步:fs.writeFileSync(file‘路径’, data‘内容’);
   eg:fs.writeFileSync('./1.html','还是那么热爱前端');

 异步:fs.writeFile(file, data, [,options], callback); 
   eg:fs.writeFile('./2.html','一个学画画的美术猿',err =>{
        if(err) throw err; //这里的err 实际是error 错误的意思
        })

在流式写入的格式:

`格式: fs.createWriteStream(path[, options]);
 eg:
   //1.引入 fs 模块
  let fs = require('fs');

  //2.创建写入流对象
  let ws = fs.createWriteStream('./5.html',{flag:'w'});

  //3.调用写入的方法
  ws.write('青春不常在');
  ws.write('抓紧谈恋爱');
  ws.write('想都不用想');
  ws.write('那就现在吧');

  //4.关闭写入流
  ws.close();`

两种写入方式相同点:结果都一样

两种写入方式不同点:简单写入相对来讲简单一点 次数较少 而流式写入则可以运用于批量内容的写入

2,文件系统的读取有两种:

简单读取:

 格式:fs.readFile(file, function(err, data){})----异步
      `eg; fs.readFile('./1.html',(err,data) => {
         // err 如果读取失败,返回一个对象,对象中有错误的信息
         // err 如果读取成功,返回 null
           if(err) throw err;
         // 读取成功,打印数据
         console.log(data.toString());`

       fs.readFileSync(file)----同步
      `eg;let result = fs.readFileSync('./2.html');
        console.log(result.toString());`

流式读取:

格式: fs.createReadStream();
eg:
  `//1. 引入 fs 模块
  let fs = require('fs');

  //2.创建读取流对象
  let rs = fs.createReadStream('./1.html');

  //3.绑定事件
  rs.on('data',chunk => {
      //data 是事件的名字:读取文件的事件名
      //chunk 块儿  ,读取文件时,是一段一段读取的(64KB = 65536 字节)
      // console.log(chunk.toString());
      // console.log(chunk.length);
    });
      console.log('正在读取文件');
    //读取流创建 打开文件的时候 执行
  rs.on('open',() =>{
      console.log('打开文件');
    });
  //读取流创建 关闭文件的时候 执行
  rs.on('close',() =>{
      console.log('关闭文件');
  })
  //读取完 文件的内容后 执行
  rs.on('end',() =>{
      console.log('文件读取完成');
  })

  //执行的顺序是open  data  end  close  但是写入的时候不分顺序`

3,文件系统的删除有两种:

  fs.unlink('./test.log', function(err){});---->异步
  fs.unlinkSync('./move.txt');-----》同步
  //只测试一次

补充部分:

文件夹操作:

 ` //1.引入 fs 模块
  let fs = require('fs');

  //创建文件夹
  // fs.mkdir('./新建文件夹',err => {
  //     if(err) throw err;
  //     console.log('创建成功了');
  // })
  // //只执行一次

  //读取文件夹
  // fs.readdir('./',(err,data)=>{
  //     if(err) throw err;
  //
  //     //data 文件夹下的文件列表
  //     console.log(data);
  // })

  // fs.readdir('c:/',(err,data) =>{
  //     if(err) throw err;
  //     console.log(data);
  // })

  //删除文件夹
  // fs.rmdir('./新建文件夹',err => {
  //     if(err) throw err;
  //     console.log('删除成功了');
  // })

  //rmdir 在删除的时候,如果是空文件夹,会直接删除
  //rmdir 在删除的时候,如果是 非空文件夹 ,则报错
  //不管是否是空文件夹,都需删除   recursive:true
  fs.rmdir('./file',{recursive:true},err => {
      if(err) throw err;
      console.log('删除成功了');
  })`
posted @ 2021-08-18 20:32  拾呓  阅读(94)  评论(0编辑  收藏  举报