node.js阶段 - fs模块( 学会用代码去操作文件 / 文件夹 )

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("删除成功")
	})
	
  • 删除非空目录
  1. 先把目录里面的文件删除
  2. 直到目录成为一个空目录时,直接删除目录

	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");
	
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值