nodejs中fs文件系统内置模块

一、fs文件系统模块

Node.js 的 API 内置有两个模块: path 和 fs ,我们使用 JavaScript 代码编写程序运行在 Node.js 环境中就可以操作文件

1.1、同步读取文件信息

同步读取:读取的时候,要等文件读取完毕后,才会执行后面的代码 (sync 同步)

const fs = require("fs");
const path = require("path");
let pathName = path.join(__dirname, 'hello.txt');
​
// const content = fs.readFileSync(pathName);   同步读取文件
// console.log(content);
// console.log(content.toString());
​
const content = fs.readFileSync(pathName, "utf-8");
console.log(content);
​

1.2、异步读取文件信息

不用等待文件读取完毕就会执行后面的代码。

思考:如何读到后面的数据

答:在读取文件的时候,传递一个回调函数callback,当读取完毕后,回调函数执行,读取后面的数据

const fs = require("fs");
const path = require("path");
​
let pathName = path.join(__dirname, "hello2.txt");
// console.log(file);
//参数1 要读取的文件
//参数2 设置读取到内容的编码,设置后读到的内容为字符串,如果不传则读到的数据为 buffer
//参数3 回调函数,读取完文件后执行的代码
fs.readFile(pathName, "utf-8",(error, data)=>{
​
    // console.log(error);
    // console.log(data);
​
    if(error){
        console.log(error);
        return
    }
​
    console.log(data);
});

1.3、异步写入

语法:fs.writeFile(文件路径,“改写入的内容”,“字符集编码”,回调函数)

写入成功后原文件内容被覆盖重写

const fs = require("fs");
const path = require("path");
​
let pathName = path.join(__dirname, "hello.txt");
​
​
fs.writeFile(pathName, "hello_write111", "utf-8",(error)=>{
    console.log("error");
    console.log("写完啦");
});
console.log("end");

1.4、读取当前路径下的文件名列表方法

遍历的结果为数组

const fs = require("fs");
fs.renameSync(旧文件名, 新文件名);   //修改文件名
fs.readdirSync(__dirname);    //读取当前路径下的文件名列表
​
let str = "hello";
str.endsWith("he");   //true
str.startsWith("go");  //false
str.substring(2,4) //ll 左闭右开区间
str.substring(2) //llo  下标为2取到结束

1.5、小案例

需求:把当前文件夹的js文件的名字都添加前缀 [day03],利用数组遍历(foreach)的方式去获取每一个数组名

const fs = require("fs");
let nameList = fs.readdirSync(__dirname);
​
nameList.forEach(currFileName => {
    if(currFileName.endsWith(".js")){
        fs.renameSync(currFileName, `[day03]${currFileName}`)
    }
});

需求:把当前文件夹的名字都删除前缀 [day03]

const fs = require("fs");
let nameList = fs.readdirSync(__dirname);
let str1 = "[day03]"
​
nameList.forEach(currFileName => {
    if(currFileName.startsWith(str1)){
        fs.renameSync(currFileName, currFileName.substring(str1.length))
    }
});

1.6、思考题

// 需求:现在存在三个文件 1.txt(我) 2.txt(爱) 3.txt(nodejs) // 每个文件里面有一个字符。使用:fs.readFile(异步) 顺序读取 1.txt 2.txt 3.txt 里面的内容,然后组成 我爱nodejs 把这个字符串写入 异步的写 到 data.txt 文件里面。

const fs = require("fs");
const path = require("path");
​
let pathName1 = path.join(__dirname,"files", "1.txt");
let pathName2 = path.join(__dirname,"files", "2.txt");
let pathName3 = path.join(__dirname,"files", "3.txt");
let pathName4 = path.join(__dirname,"files", "data.txt");
​
​
fs.readFile(pathName1,"utf-8",(error1, data1)=>{
    if(error1){
        console.log(error1);
        return
    }
​
    fs.readFile(pathName2,"utf-8",(error2, data2)=>{
​
        if(error2){
            console.log(error2);
            return
        }
​
        fs.readFile(pathName3,"utf-8",(error3, data3)=>{
​
            if(error3){
                console.log(error3);
                return
            }
​
            // console.log(data1+data2+data3);
​
            fs.writeFile(pathName4,data1+data2+data3,"utf-8",(error)=>{
                console.log(data1+data2+data3);
            })
​
        })
    })
});

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值