fileStystem模块
后端语言都有操作文件系统的能力,在nodejs里我们依靠的是fs模块
每种操作的方法基本都有同异步的两种不同方法
1.查看文件信息(多用来判断文件是否存在)exists
var fs=require('fs'); //异步查询文件信息 fs.stat("../sources/temp.txt",(err,data)=>{ if(err){ console.log(err); }else{ console.log(data) //判断是否是文件 console.log(`文件:${data.isFile()}`) //判断是否是路径 console.log(`目录:${data.isDirectory()}`) } }) //同步查询 //fs.statSync("../sources/temp.txt") console.log(1)
2.创建一个目录
//创建一个目录,如果目录已存在的话就会返回错误信息 fs.mkdir("logs",function(err){ if(err){ console.log(err); }else{ console.log('success'); } })
3.写入文件
//给文件写内容,当文件不存在会创建一个文件,第二个参数为写入的内容,每次写入都会覆盖 fs.writeFile('logs/hello.log','hello everyone\n',function(err){ if(err){ console.log(err); }else{ console.log('success') } }) //给文件中追加内容 fs.appendFile("logs/hello.log",'hello world\n',function(err){ if(err){ console.log(err); }else{ console.log('success') } })
4.读取文件内容
//读取文件内容的方法,第二个参数可选,为读取的编码格式 fs.readFile("logs/hello.log",'utf-8',function(err,data){ if(err){ console.log(err); }else{ console.log(data) } })
5.读取目录内容
//读取目录内容,返回一个数组 fs.readdir("logs",function(err,files){ if(err){ console.log(err); }else{ console.log(files) } })
6.文件重命名
//重命名方法 fs.rename("logs/hello.log","logs/world.log",function(err){ if(err){ console.log(err) }else{ console.log('success') } })
7.删除目录、文件
fs.rmdir可以删除目录但是,必须是空目录,fs.unlink可以删除文件,如果我们要删除一个目录及它下面的文件或子目录的话,我们需要先读取出来,删除完成后再进行根目录的删除
小练习:创建一个copy复制文件的函数
const fs = require('fs') const _path = require('path') let copy = (path,target)=>{ fs.stat(path,(err)=>{ if(err){ console.log('要复制的文件不存在') }else{ let content = fs.readFileSync(path) fs.writeFile(target+'/'+_path.basename(path).replace('.','-副本.'),content,(err)=>{ if(err){console.log('目标目录不存在')}else{ console.log('success') } }) } }) } copy('./sources/hello.txt','./sources/a')
8.fs-extra模块
这是一个第三方的fs模块,需要下载 npm install fs-extra
fs模块上的方法它都有,并且还封装了一些很好用的方法,比如:copy、remove..