fs模块
在后端操作中,不可避免的会生成文件或者删除文件
后端处理的文件,实质上是前端的页面
fs 模块可以实现这个功能
fs模块
操作文件的模块 内置模块
所有的文件操作,都有同步异步之分
添加 sync 后的方法用作 异步 ( 按照需要 )
- 第一个参数为读取文件的路径或文件描述符;
- 第二个参数为 options,默认值为 null
其中有 encoding(编码,默认为 null)和 flag(标识位,默认为 r)
也可直接传入 encoding; - 返回值为文件的内容,如果没有 encoding,返回的文件内容为 Buffer
如果有按照传入的编码解析
在使用node.js 删除文件时,不会经过回收站
删除前切记备份!!! 备份放在不同的路径,以免删除错误,发生不可挽救的损失
操作文件
- fs.writeFile( )
写入文件( 生成文件 )当写入内容存在时,会覆盖原有的文件
参数1:文件名称,包括文件格式
参数2:文件需要写入的内容
参数3:配置对象:flag属性 (可选参数); a :追加写入;w:正常写入( 默认值 )
fs.writeFile("1.text","我是需要写入的文件-新的-追加写入",{flag:"a"},function(err){
if (err) {
return console.log(err)
}
// 作为提示开发者
console.log("写入成功!")
})
- fs.readFile( )
文件读取
参数1:错误信息
参数2:读取到的信息
fs.readFile("1.text","utf-8",(err,data)=>{
if (err) {
return console.log(err)
}
console.log(data)
// 不写utf-8 data 转为正常文本内容输出 可以使用 data.toString()
// 不写utf-8 输出data 会按照十六进制的编码写出
})
- fs.rename( )
重命名
参数1:原文件名
参数2:新的命名
fs.rename("2.text","2_new.text",(err)=>{
if(err){
return console.log(err)
}
console.log("修改成功")
})
- fs.unlink( )
删除
参数:原文件名
fs.unlink("copy.text",()=>{
if (err) {
return console.log(err)
}
console.log("删除成功")
})
- fs.copyFile( )
复制的本质是:先读取,再写入
参数1:被复制的文件
参数2:生成的文件( 复制出来的文件 )
fs.copyFile("copy.text","copy_new.text",(err)=>{
if (err) {
return console.log(err)
}
console.log("复制成功")
});
------------------------------------------------------
// 封装复制文件的方法
function myCopy(src,dest){
// src 读取的文件路径
// dest 写入的文件名
// fs.readFileSync(src) 读取完后的返回值
fs.writeFileSync(dest,fs.readFileSync(src));
}
myCopy("index.html","index_copy.html");
目录操作( 文件夹 )
操作目录时,不需要后缀
- 创建目录
fs.mkdir("shen",(err)=>{
if (err) {
return console.log(err);
}
console.log("创建目录成功")
})
- 修改目录名称
fs.rename("shen","qin",(err)=>{
if (err) {
return console.log(err)
}
console.log("重命名成功")
})
- 读取目录
fs.readdir("qin",(err,data)=>{
if (err) {
return console.log(err)
}
console.log(data)
})
- 判断文件或目录是否存在
fs.exists("copy.text",exists =>{
console.log(exists)//是否找到指定内容
})
- 获取文件
fs.stat("qin",(err,data)=>{
if (err) {
return console.log(err)
}
// console.log(data)
// 文件是否是文件
console.log(data.isFile())
// 文件是否是目录
// console.log(data.isDirectory())
})
- 删除目录
必须是空文件夹
fs.rmdir("qin",(err)=>{
if (err) {
return console.log(err)
}
console.log("删除成功")
})
- 删除非空目录
- 先把目录里面的文件删除
- 直到目录成为一个空目录时,直接删除目录
function removeDir(path){
// 获取到目录
let data = fs.readdirSync(path)
// ["",""]
// console.log(data)
for(let i = 0 ; i < data.length ;i++){
// 循环判断目录中的每一个内容
// 处理子目录的路径
let url = path + "/" + data[i];
// 获取详细信息
let stat = fs.statSync(url);
if (stat.isDirectory()) {//如果是目录继续查找
removeDir(url);
}else{//文件 删除
fs.unlinkSync(url)
}
}
fs.rmdirSync(path)
}
removeDir("22");