后端语言都有操作文件系统的能力,在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
',function(err){
if(err){
console.log(err);
}else{
console.log('success')
}
})
//给文件中追加内容
fs.appendFile("logs/hello.log",'hello world
',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..