File System的简单操作

在进行这些操作之前,需要在js文件中导入fs模块

const fs = require("fs");
  • const是定义一个常量,比较特殊的是,使用const定义时必须赋值,一旦被赋值就不能再修改。

一、操作文件夹

  • 创建文件夹
    • fs.mkdir("test", function(err) {
          if (err) throw err;
          console.log("创建成功");
      })
  • 删除文件夹
    • fs.rmdir("test", err => {
          if (err) throw err;
          console.log("删除成功");
      })
  • 判断文件夹是否存在
    • exists方法现在已经不推荐使用了。
    • fs.exists("test", (exists)=> {
          if (exists) {
              console.log("存在");
          } else {
              console.log("不存在");
          }
      })
    • access方法在有的nodejs版本中需要写成  fs.constants.F_OK
    • fs.access('test', fs.constants.F_OK, (err) => {
          if(err) {
              console.log("文件夹不存在");
              return;
          }
          console.log("文件夹存在");
      })

二、操作文件

  • 写入文件
    • fs.writeFile("123.txt",  "hello word", err => {
          if(err) throw err;
      })
  • 追加文字
    • fs.appendFile("123.txt", "啦啦", err => {
          if(err) throw err;
      })
  • 修改文件名
    • fs.rename("C:/Users/Scr/Desktop/丽丽.bmp", "C:/Users/Scr/Desktop/lili.bmp", err => {
          if(err) throw err;
          console.log("ok");
      })
  • 删除文件
    • fs.unlink("123.txt", err => {
          if(err) throw err;
          console.log("删除完成");
      })
  • 获取文件相关属性
    • fs.stat("C:/Users/Scr/Desktop/lili.bmp", (err, stats) => {
          console.log(stats);
      })
  •  监视文件
    • fs.watchFile("123.txt", (curr, prev) => {
        console.log(curr.mtime); console.log(prev.mtime); })

      监视文件一般会有延迟,可以添加第二个参数,将延迟的时间缩短

    • fs.watchFile('123.txt', {persistent: true, interval: 10}, (curr, prev) => {
        //这里是使用的是模板拼接 console.log(`the current mtime is: ${curr.mtime}`); console.log(`the previous mtime was: ${prev.mtime}`); });

三、文件流操作

一般拷贝文件的方法,适合拷贝小文件

"use strict";
const fs = require("fs");
//监视的文件
let currFile = "F:/BleRay.720P.rmvb";
//目标文件
let targetFile = "F:/movie";
//读文件的流
let rs = fs.createReadStream(currFile);
//写文件的流
let ws = fs.createWriteStream(targetFile);
//已经读取的文件大小
let currentCount = 0;
//文件的总大小
let fileSize = fs.statSync(currFile).size;
rs.on("data", (chunk) => {
    currentCount += chunk.length;
    //每一次获取到的数据---buffer
    //console.log(chunk);
    ws.write(chunk);
    console.log("进度:" + currentCount/fileSize + "%");
})

文件流的方式拷贝

"use strict";
//监视的文件
let currFile = "F:/BleRay.720P.rmvb";
//目标文件
let targetFile = "F:/movie";
const fs = require("fs");
//读文件的流
let rs = fs.createReadStream(currFile);
//写文件的流
let ws = fs.createWriteStream(targetFile);

//适合复制大文件,不能显示文件进度
rs.pipe(ws);
原文地址:https://www.cnblogs.com/AnnieShen/p/6036398.html