fs 读和写

fs 读写文件

fs.opensync(path[]) sync是同步 async是异步
fs是nodejs核心模块,需要引入才能使用

同步写入文件:分为3步

打开文件

  • fs.openSync(path[, flags, mode]) []代表可选值
    • path 文件路径
    • flags 可选值,一定有默认值 'r' 要对文件进行的操作 w是写入
    • mode 可选值,一定有默认值 0o666 设置文件的操作权限
      • 0o666 可读可写
      • 0o111 文件可执行
      • 0o222 文件可写入
      • 0o444 文件可读取
        fs的返回值:表示文件描述符的整数。

写入文件

  • fs.writeSync(fd, string[, position[, encoding]])
    • fd 文件描述符的整数
    • string 写入的内容
    • position 从哪个位置开始 0
    • encoding 编码方式 utf-8
    • 返回值:写入的字节数

关闭文件

  • fs.closeSync(fd)
// 引入fs
const fs = require('fs');

// 打开文件
const fd = fs.openSync('./a.txt', 'a');
console.log(fd);

// 写入文件
const byte = fs.writeSync(fd, '111今天天气真晴朗~');
console.log(byte);

// 关闭文件
fs.closeSync(fd);

异步写入文件

打开文件
  • fs.open(path[, flags[, mode]], callback)
    • callback
      • err 错误对象:如果方法出错了,值就是错误对象,如果方法没有出错,就是null
      • 错误优先机制:要求开发者写异步代码优先处理错误
写入文件
  • fs.write(fd, string[, position[, encoding]], callback)
关闭文件
  • fs.close(fd, callback)
使用async +promise 避免回调地狱
const fs = require('fs');

fs.open('./b.txt', 'w', (err, fd) => {
  // 判断方法有无错误
  if (err) {
    // 出错了~
    console.log('open方法出错了: ', err);
  } else {
    // 没有出错
    fs.write(fd, '锄禾日当午', (err) => {
      if (err) {
        console.log('write方法出错了:', err);
      } else {

      }
      // 不管写入成功或者失败,都要关闭文件
      fs.close(fd, (err) => {
        if (err) {
          console.log('write方法出错了:', err);
        } else {

        }
      })
    })
  }
});
//这个是避免回调嵌套
(async () => {
  // 打开文件
  const fd = await new Promise((resolve, reject) => {
    // 执行异步操作
    fs.open('c.txt', 'w', (err, fd) => {
      if (!err) {
        // 将promise对象改为成功状态
        resolve(fd);
      } else {
        // 将promise对象改为失败状态
        reject(err);
      }
    })
  });
  // 写入文件
  await new Promise((resolve, reject) => {
    fs.write(fd, '汗滴禾下土', (err) => {
      if (!err) {
        resolve();
      } else {
        // 打印错误信息
        console.error(err);
        resolve(err);
      }
    })
  });
  // 关闭文件
  await new Promise((resolve, reject) => {
    fs.close(fd, (err) => {
      if (!err) resolve();
      else reject(err);
    })
  })

})();

简单写法

fs.writeFile(file, data[, options], callback) data写入的数据

fs.writeFile('d.txt', '窗前明月光', (err) => {
  if (!err) {
    console.log('文件写入成功~');
  } else {
    console.log(err);
  }
});

简单读取文件

  • fs.readFile(path,callpack)
    • callpack
      • err
      • data 读取的文件内容 是一个buffer数据,想要看具体内容,需要tostring
fs.readFile('./package.json', (err, data) => {
  if (!err) {
    console.log(data.toString());
  } else {
    console.log(err);
  }
});

stat 文件的数据
const {readFile, stat, watchFile} = require("fs");
stat("文件路径",(err,stats)=>{
stats就是文件的信息
放入etag(stats) 就会生成一个独有的id
})
监听 当文件css改变时,就会触发
watchFile(css, (curr, prev) => {
curr就是现在的文件
etagName = etag(curr); //curr 中 有stats
lastModified = new Date().toGMTString()
});

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容