fs模块
- fs是文件操作模块,所有文件操作都是有同步和异步之分,特点是同步会加上 “Sync” 如:异步读取文件 “readFile”,同步读取文件 “readFileSync”。
文件操作
读取
- 异步读取
let fs = require("fs");
fs.readFile("1.txt","utf-8",(err,data)=>{
if(err){
return console.log(err);
}
console.log(data.toString());
})
- 同步读取
let fs = require("fs");
let res = fs.readFileSync("1.txt");
console.log(res.toString());
写入
let fs = require("fs");
fs.writeFile("2.txt","我是要写入的内容",{flag:"w"},err=>{
if(err){
return console.log(err);
}
console.log("写入成功");
})
let fs = require("fs");
fs.writeFileSync("1.txt","同步方式写入数据",{flag:"w"});
修改
- 修改文件名,目录也可以通过rename来操作
- 异步修改
fs.rename("1.txt","5.txt",function (err) {
if(err){
console.log(err);
}else{
console.log("修改成功");
}
});
fs.renameSync("1.txt","3.txt");
复制
fs.copyFile("index.html","myindex.html",err=>{
if(err){
return console.log(err);
}
console.log("复制成功!");
})
fs.copyFileSync("index.html","myindex2.html");
function mycopy(src,dest){
fs.writeFileSync(dest,fs.readFileSync(src));
}
mycopy("index.html","test.html");
删除
fs.unlink("2.txt",(err)=>{
if(err){
return console.log(err);
}
console.log("删除成功");
})
fs.unlinkSync("myindex2.html");
判断文件是否存在
fs.exists("index.html",exists=>{
console.log(exists);
})
获取文件详细信息
fs.stat("index.html",(err,stat)=>{
if(err){
return console.log(err);
}
console.log(stat);
})
判断是否为文件
fs.stat("index.html",(err,stat)=>{
if(err){
return console.log(err);
}
let res = stat.isFile();
console.log(res);
})
目录操作
创建目录
fs.mkdir("11",err=>{
if(err){
return console(err);
}
console.log("创建成功");
})
fs.mkdirSync("22");
修改目录名称
fs.rename("11","22",err=>{
if(err){
return console.log(err);
}
console.log("修改成功");
})
fs.renameSync("33","44");
读取目录
fs.readdir("22",(err,data)=>{
if(err){
return console.log(err);
}
console.log(data);
})
fs.readdirSync("22");
判断目录是否存在
fs.exists("22",exists=>{
console.log(exists);
})
判断是否为目录
fs.stat("22",(err,stat)=>{
if(err){
return console.log(err);
}
let res = stat.isDirectory();
console.log(res);
})
删除目录
空目录
fs.rmdir("22",err=>{
if(err){
return console.log(err);
}
console.log("删除成功");
})
fs.readdirSync("22");
非空目录
function removeDier(path){
let data = fs.readdirSync(path);
for(let i = 0;i<data.length;i++){
let url = path + "/" + data[i];
let stat = fs.statSync(url);
if(stat.isDirectory()){
removeDier(url);
}else{
fs.unlinkSync(url);
}
}
fs.rmdirSync(path);
}
removeDier("22");
读取目录信息
fs.stat("22",(err,stat)=>{
if(err){
return console.log(err);
}
console.log(stat);
})