Nodejs:Fs文件管理模块
一、引入模块
nodejs中都是通过require来引入模块的
const fs = require("fs" )
二、模块中文件的操作方法
fs中包含的方法一般都有两种使用方法
- 异步执行,需要用回调函数来接收返回值
- 使用Sync后缀异步变同步,可以直接使用变量接收返回值
2.1 文件读取 readFile
//使用公式
//fs.readFile("读取文件路径","读取字符集",callback(err,data));
//当读取成功时err的值为空
//第一种使用方式
fs.readFile("./a.text","utf8",(err,data)=>{
console.log(err);
console.log(data)
});
//第二种使用方式
let data = fs.readFileSync("./a.text","utf8");
2.2 写入文件 writeFile
//使用公式
//fs.writeFile("文件路径","写入内容",callback(err));
//当写入文件路径文件不存在时会自动创建新文件,当文件存在且有内容时会覆盖原先的内容
fs.writeFile("./a.text","hellow word",err=>{
console.log(err);
})
2.2 追加文件数据 appendFile
//使用公式
//fs.appendFile("文件路径","追加的数据",callback(err));
//当写入文件路径文件不存在时会自动创建新文件,当文件存在且有内容时会从后面追加新数据
fs.writeFile("./a.text","hellow word",err=>{
console.log(err);
})
2.2 删除文件 unlink
//使用公式
//fs.unlink("文件路径",callback(err));
fs.unlink("./a.text",err=>{
console.log(err);
})
2.2 重命名 rename
//使用公式
//fs.rename("文件路径","新的文件名字",callback(err));
//新文件名也要加上路径
fs.writeFile("../a.text","../b.text",err=>{
console.log(err);
})
2.2 写入流 createWriteStream
//使用公式
//let ws = fs.createWriteStream("文件路径");
//ws.write("要写入的字符串");
//ws.end(); 结束
//ws.on("finish",()=>{}); 完成时执行
//跟writeFile一样会覆盖之前的内容
//制作一个多次写入的写入流
let str = "hellow word";
let ws = fs.createWriterStream("./a.text");
for(let i = 0 ; i < 100 ; i++){
ws.write(str);
}
ws.end();
ws.on("finish",()=>{
console.log("写入完成");
})
2.2 读取流 createReadStream
let str = "";
let rs = fs.createReadStream("./a.text");
rs.on("data",(dataStr)=>{
re += dataStr;
})
rs.on("end",()=>{
console.log("读取完成",str);
})
ws.on("error",(err)=>{
console.log(err);
})
2.3 管道流 pipe
//管道流就是读取流进行读取写入流进行写入
let rs = fs.createReadStream("./a.text"); //读取流
let ws = fs.createWriteStream("./b.text"); //写入流
rs.pipe(ws);
三、模块中文件夹的操作方法
3.1 创建文件夹 mkdir
//使用公式
//fs.mkdir("创建文件的目录",callback(err));
fs.mkdir("./a",err=>{
console.log(err);
})
3.2 检测是文件夹还是文件 stat
fs.stat("文件或文件夹路径",callback(err,stats){
if(stats.isFile()){
console.log("这是一个文件");
}else if(stats.isDirectory()){
console.log("这是一个文件夹");
}
})
3.3 删除文件夹 rmdir
//注意:该方法只能删除空文件夹
fs.rmdir("文件夹路径",callback(err){
console.log("删除成功");
})
3.4 读取文件夹 readdir()
fs.readdir("文件夹路径",callback(err,files){
console.log(files);
})
四、注意
上述方法都可以通过在方法末尾添加Sync来将原本是异步的方法修改为同步,并且直接返回得到的数据,参考2.1的第二种使用方法