fs:file system 文件系统模块 是node内置的 用于本地文件或者目录的增删改查
1. 增
mkdir() 函数用于创建文件夹,第一个参数是一个相对路径 第二个路径是一个回调函数
fs.mkdir("./myDir",function(){
console.log("创建成功");
});
writeFile() 写入文件 如果文件不存在 会自动创建并写入 如果文件里面有数据,会把原来的数据覆盖掉
fs.writeFile("./myDir/text.txt","罗志祥",result=>{
写入失败的时候,回调函数的参数就是错误信息对象
写入成功 null
if(!result){
console.log("写入成功");
}
});
appendFile() 写入文件 如果文件不存在 会自动创建并写入,如果存在会把新的数据追加到原有数据的后面
fs.appendFile("./myDir/text.txt","吴亦凡",err=>{
if(!err){
console.log("写入成功");
}
})
2. 删
unlink() 删除文件
// 删除文件 不能边写边删
fs.unlink("./myDir/1.txt",err=>{
if(!err){
console.log("删除成功");
}
});
rmdir() 删除文件夹
fs.rmdir("./myDir/文件夹",err=>{
if(!err){
console.log("删除成功");
}
})
3. 改
rename() 可以修改文件或者文件夹的名字和位置
fs.rename("./myDir/2.txt","./myDir/dome.js",err=>{
if(!err){
console.log("修改成功");
}
})
修改文件夹
fs.rename("./myDir","./abc",err=>{
if(!err){
console.log("修改成功");
}
})
修改文件位置
fs.rename("./abc/dome.js","./myDir/dome.js",err=>{
if(!err){
console.log("修改成功");
}
})
4. 查
exists() 判断文件夹或者文件是否存在 返回值是一个布尔值
fs.exists("./myDir/dome.js",flag=>{
// 回调函数的参数是一个布尔值,如果存在返回true 不存在返回false
if(flag){
console.log("存在");
}
})
stat() 、access() 判断文件或者文件夹是否存在
fs.stat("./myDir/a.txt",err=>{
// 如果不存在 回调函数的参数就是错误信息对象 存在返回 null
if(!err){
console.log("存在");
}
});
fs.access("./myDir/a.txt",err=>{
if(!err){
console.log("存在");
}
})
5. 读
isFile() 判断是否是文件
isDirectory() 判断是否是文件夹
readFile() 读取文件中的数据信息
fs.readFile("./abc/text.txt",(err,data)=>{
// 回调函数的第二个参数 就是读取到的信息
// 读取到的信息是一个buffer格式的数据(buffer是内存中的缓存数据格式
// 可以调用toString() 转成字符串
if(!err){
console.log(data.toString());
}
});
readdir() 读取文件夹中的信息
fs.readdir("./myDir", (err, data) => {
// 回调函数第二个参数是读取的数据信息(读取成功得到数组,读取失败得到undefined)
if (!err) {
// data数组中 只包含子文件和子文件夹,不包含二级子文件夹中的信息
console.log(data);
}
})
以上使用的API都是异步函数 fs中同时提供了相应的同步函数
异步函数:可以同时执行多个函数,函数的执行结果从回调函数中获取
同步函数:只有上一个函数执行结束,才执行下一个,函数执行的结果从返回值获取
举例:读取 ./abc/text.txt中的信息
1. 异步函数的写法
fs.exists("./abc/text.txt",flag=>{
if(flag){
fs.readFile("./abc/text.txt",(err,data)=>{
if(!err){
console.log(data.toString());
}
})
}
});
2.同步函数写法
var flag = fs.existsSync("./abc/text.txt");
// console.log(flag); // true
if(flag){
var res = fs.readFileSync("./abc/text.txt");
console.log(res.toString());
}