提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
一、fs是什么?
fs: file system 文件系统模块是node中内置模块用于本地文件或者目录的增删改查操作直接导入即可使用
二、fs模块
1.增
代码如下(示例):
// 1.增
// mkdir()函数用于创建文件夹,第一个参数是相对路径 第二个参数是一个回调函数
// fs.mkdir("./myDir",()=>{
// console.log("创建完成");
// })
// writeFile("相对路径","内容",回调函数)用于写入文件,如果文件不存在,会自动创建并写入,如果文件存在会把原来的数据覆盖
// fs.writeFile("./myDir/text.txt","wuyifan",()=>{
// console.log("写入成功");
// })
// fs.writeFile("./myir/text.txt","罗志祥",(err)=>{
// // console.log(result);//写入失败的时候result错误信息 成功时是null
// // if(result){
// // console.log("写入出错");
// // }else{
// // console.log("写入成功");
// // }
// if(!err){
// console.log("写入成功");
// }
// })
// fs.appendFile()写入文件,如果文件不存在,会自动创建并写入 如果存在会把新的数据追加到原有的数据后边
// writeFile()和.appendFile()写入的时候都需要保证目录存在 否则就会写入失败
// fs.appendFile("./myDir/text.txt","郑爽",()=>{
// console.log("写入成功");
// })
2.删
代码如下(示例):
// 2.删
// unlike()删除文件
// fs.unlink("./myDir/text.txt",(err)=>{
// if(!err){
// console.log("删除成功");
// }
// })
// fs.rmdir("./myDir/aaa",(err)=>{
// if(!err){
// console.log("删除成功");
// }else{
// console.log(err);
// }
// })
该处使用的url网络请求的数据。
3.改
// 3.改
// rename 重命名 可以修改文件或目录的名字和位置
// fs.rename("./myDir/text.txt","./myDir/demo.js",(err)=>{
// if(err){
// console.log(err.message);
// }else{
// console.log("修改成功");
// }
// })
// fs.rename("./myDir","./abc",(err)=>{
// if(!err){
// console.log("文件更名成功");
// }
// })
// fs.rename("./abc/demo.js","./myDir/demo.js",(err)=>{
// if(!err){
// console.log("文件移动成功");
// }
// })
4.查
// 判断文件或目录是否存在 即将废除
// 回调函数的参数是一个布尔值 true表示存在 false表示不存在
// fs.exists("./myDir/demo.js",(flag)=>{
// if(flag){
// console.log("存在");
// }else{
// console.log("不存在");
// }
// })
// stat()用于判断文件或目录是否存在,如果不存在返回一个错误对象 存在返回null
// fs.stat("./myDir/demo.js",(flag)=>{
// if(flag){
// console.log("不存在");
// }else{
// console.log("存在");
// }
// })
// 判断文件目录是否存在 不存在返回错误对象 存在返回空
// fs.access("./myDir/demo.js",(flag)=>{
// if(flag){
// console.log("不存在");
// }else{
// console.log("存在");
// }
// })
5.读
// readdir()读取文件夹中的信息
// fs.readdir("./myDir",(err,data)=>{
// //回调函数第一个参数是读取状态(成功时空,失败返回一个错误对象)
// // 第二个参数是读取的数据信息(读取成功得到数组,读取失败得到undefined)
// if(!err){
// // data数组中包含子文件名和子文件名
// console.log(data);
// }
// })
// readFile()读取一个文件中的数据信息
// fs.readFile("./myDir/aaa/1.txt",(err,data)=>{
// if(!err){
// // 读取的信息是一个buffer格式的数据
// // buffer 是内存中的缓存数据格式16进制 可以调用toString转成字符串
// console.log(data.toString());
// }
// })
6.举例读取./mydir/demo.js 文件中的信息
1.异步函数的写法
fs.exists("./myDir/demo.js",(err)=>{
if(err){
fs.readFile("./myDir/demo.js",(err,data)=>{
if(!err){
console.log(data.toString());
}
})
}
})
2.同步函数写法
var flag=fs.existsSync("./myDir/demo.js");
if(flag){
var res=fs.readFileSync("./myDir/demo.js")
console.log(res.toString());
}
对比来看:同步写法比异步写法更简单,但同步代码在执行的时候容易造成进程阻塞 所以尽量少用同步
读的时候不用同步,创建文件夹的时候用同步 时间不会浪费很多 一个文件夹操作必须等到这个文件夹出现才能操作
总结
fs文件系统中常用的 增删改查API
增: mkdir() writeFile() appendFile()
删: unlink() rmdir()
改: rename()
查: exists() stat() access()
读: readdir() readFile()