node--fs模块

文章目录

        • 读取文件
          • 方式一
          • 方式二
        • 写入文件
        • 文件重命名
        • 创建文件夹
        • 文件夹重命名
        • 文件夹读取

最近在实训,学了一下node想着用node写接口,完成实训项目,不过老师要求用java,那就只能和后端的一起合作写项目了,不过还是分享一下这星期学的node的fs模块吧。

在客户端,出于安全考虑,我们并不能操作文件,不过node中的fs模块可以让我们在服务器端操作文件。

读取文件

我们以读取同级目录的aaa.txt文件为例,记住引入fs模块

const fs = require("fs");
方式一

同步读取文件,代码会被阻塞

const res1 = fs.readFileSync("./aaa.txt", {
  encoding: "utf-8",
});
// 这里调用toString()方法或者上边读取文件的时候指定读取的编码格式
console.log(res1);
方式二

异步读取文件,异步读取文件有两种方式一种是回调函数,另一种是通过promise的形式读取,回调函数的形式会造成回调地狱所以不太建议使用(并不会阻塞代码)

//回调函数
fs.readFile(
  "./aaa.txt",
  {
    encoding: "utf-8",
  },
  (err, data) => {
    if (err) {
      console.log("读取文件错误");
      return;
    }
    console.log(data);
  }
);
console.log("后续代码");
//promise形式
fs.promises
  .readFile("./aaa.txt", {
    encoding: "utf-8",
  })
  .then((res) => {
    console.log(res);
  })
  .catch((err) => {
    console.log(err);
  });
  console.log("后续代码");

写入文件

const content = "我是写入的内容";
/* 
文件写入操作
第一个参数是要写入文件的路径(不存在会自动创建)
第二个参数是写入的内容
第三个参数是配置对象(可不传)包括写入的编码格式以及写入方式
第四个参数是回调函数

*/
fs.writeFile(
  "./ccc.txt",
  content,
  {
    encoding: "utf-8",
    flag:"w"
  },
  (err) => {
    if (err) {
      console.log("文件写入错误", err);
      return;
    }
    console.log("写入文件成功");
  }
);

我们来简单的看一下flag一些常见的值以及具体含义

falg 值含义
w 打开文件写入(如果没有会自动创建文件),默认值
w+ 打开文件进行读写操作(可读可写)
r 打开文件读取,读取时默认值
r+ 打开文件进行读写,如果不存在会抛出异常
a 打开文件并将写入内容放入文件末尾,如果不存在会创建文件
a+ 打开文件可以进行读写操作

w进行写入操作时会默认覆盖原本的内容,而a会在文件内容末尾添加上写入的内容

文件重命名

fs.rename("./aaa.txt", "./bbb.txt", (err) => {
  console.log("重命名结果", err);
});

创建文件夹

// 创建文件夹
fs.mkdir("./new", (err) => {
  if (err) {
    console.log("创建失败", err);
    return;
  }
  console.log("创建成功");
});

文件夹重命名

 fs.rename("./new", "./renameDir", (err) => {
   console.log("重命名结果", err);
 });

文件夹读取

文件夹中会包含文件还有文件夹,我们想要取所有文件的话就需要递归调用并且判断是否时文件夹

function readDir(path) {
  fs.readdir(path, { withFileTypes: true }, (err, files) => {
    files.forEach((item) => {
    //判断是否是文件夹
      if (item.isDirectory()) {
      	console.log("获取到文件夹", item.name);
        readDir(`${path}/${item.name}`);
      } else {
        console.log("获取到文件", item.name);
      }
    });
  });
}

readDir("./new");

这周的分享就到这里吧,随后更多的node知识学过之后在继续分享

你可能感兴趣的:(javascript,前端,vue.js,node.js)