node--fs模块

本文介绍了Node.js的fs模块,用于在服务器端操作文件。详细讲解了如何同步和异步读取文件,写入文件,文件重命名,创建及重命名文件夹,并提供了相关示例代码。同时,提到了在客户端因安全原因无法直接操作文件,但在Node环境中可以使用fs模块实现。
摘要由CSDN通过智能技术生成


最近在实训,学了一下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知识学过之后在继续分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值