fs : 操作文件的模块,内置模块
语法
const fs = require("fs");
添加文件:
writeFile() : 写入(创建)文件
参数1 : 文件名称,包括文件格式
参数2 : 文件中,需要写入的内容
fs.writeFile("1.txt","我输需要写入的内容",function(err){
if(err){
return console.log(err);
}else{
console.log("写入成功");
}
});
fs.writeFile("2.txt","我输需要写入的内容",function(err){
if(err){
return console.log(err);
}else{
console.log("写入成功");
}
});
// 当写入的内容存在是,会覆盖掉原有的文件
参数3配置对象{}:
flag属性 :
a : 追加写入
w : 写入(默认值)
fs.writeFile("1.txt","111我追加进来的内容111",{flag:"r"},function(err){
if(err){
return console.log(err);
}else{
console.log("写入成功");
}
});
文件读取:
回调函数中 参数1:错误信息,参数2:读取到的信息
fs.readFile("1.txt","utf-8",function(err,data){
if(err){
return console.log(err);
}
console.log(data)
});
fs.readFile("1.txt",function(err,data){
if(err){
return console.log(err);
}
console.log(data.toString());
});
备注
所有的文件,都有同步与异步之分
文件操作中,默认都是异步的,需要同 步时,在方法后加 Sync
例如:
readFileSync(); 同步操作
readFile(); 异步操作
let data = fs.readFileSync("1.txt").toString();
console.log(data);
改——重命名:
参数1:原名字
参数2:新名字
fs.rename("1.txt","11.txt",err=>{
if(err){
return console.log(err);
}
console.log("修改成功");
});
删除
fs.unlink("2.txt",err=>{
if(err){
return console.log(err);
}
console.log("删除成功");
});
复制
本质: 先读取,在写入
fs.copyFile("11.txt","aa.txt",(err)=>{
if(err){
return console.log(err);
}
console.log("复制成功")
});
封装复制文件的方法
function myCopyfile(src,dest){
fs.writeFileSync(dest,fs.readFileSync(src));
}
myCopyfile("index.html","text.html");
目录操作
操作目录时,不需要后缀格式
创建目录:
fs.mkdir("ding",err=>{
if(err){
return console.log(err)
}
console.log("创建成功");
});
修改目录名称:
fs.rename("ding","GD",err=>{
if(err){
return console.log(err)
}
console.log("修改成功")
});
读取目录:
fs.readdir("GD",(err,data)=>{
if(err){
console.log(err)
}
console.log(data)
})
删除目录(删除的是空目录)
fs.rmdir("GD",err=>{
if(err){
console.log(err)
}
console.log("删除成功")
});
判断文件或者目录是否存在
fs.exists("index1.html",exists=>{
console.log(exists); //是否找到指定内容
});
获取文件获取目录的详细信息
fs.stat("home",(err,data)=>{
if(err){
return console.log(err);
}
console.log(data);
let res = data.isFile(); //是否是文件
console.log(res);
console.log(data.isDirectory()); //是否是目录
});
删除非空目录
思路:
- 先把目录里的文件删除
- 该目录成为一个空目录时,直接删除该目录
function removerDir(path){
//获取到目录
let data = fs.readdirSync(path); //[ 'ck','1.txt', '2.html', '33.txt' ]
// data = [""]~数组
// console.log(data)
for(let i = 0; i < data.length; i++){
// 循环判断目录中的每一个内容
// 处理子目录的路径
let url = path + "/" + data[i];
/*
循环1 : url = "22/ck"
循环2 : url = "22/1.txt"
循环3 : url = "22/2.html"
循环4 : url = "22/33.txt"
*/
// 获取到详细信息
let stat = fs.statSync(url);
if(stat.isDirectory()){ // 如果是目录,继续查找
removerDir(url);
}else{ // 如果是文件,直接删除
fs.unlinkSync(url); // 不能写path path为22
}
}
// 当循环结束后,目录成为空目录
fs.rmdirSync(path);
}
removerDir("22");
注意事项 :
在使用Node.js删除文件时,不会经过回收站
在删除前,切记备份
以免删除错误,发生不可挽救的损失