一、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);
})
})
})
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)