当前位置: 首页 > news >正文

Node.js-fs模块文件创建、删除、重命名、文件内容的写入、读取以及文件夹的相关操作

一、写入文件操作

异步写入:writeFile()
同步写入:writeFileSync()

const fs = require("fs");
fs.writeFile("目标文件路径", "要写入的内容", err => {if(err){console.log(err);return;}console.log("写入成功!");
})

二、文件追加写入操作

异步追加写入:appendFile()
同步追加写入:appendFileSync()

方式一(appendFile):

const fs = require("fs");
fs.appendFile("目标文件路径", "要追加写入的内容", err => {if(err){console.log(err);return;}console.log("追加写入成功!");
})

方式二(writeFile):

const fs = require("fs");
fs.writeFile("目标文件路径", "要追加写入的内容", { flag: "a" }, err => {if(err){console.log(err);return;}console.log("追加写入成功!");
})

三、文件流式写入操作

fs.createWriteStream( path [, options ] )

  • 程序打开一个文件是需要消耗资源的 ,流式写入可以减少打开关闭文件的次数。
  • 流式写入方式适用于大文件写入或者频繁写入的场,writeFile 适合于写入频率较低的场景。
// 导入 fs 模块
const fs = require("fs");
// 创建写入流对象
const ws = fs.createWriteStream("目标文件路径");
// write 写入
ws.write("我喜欢你脸红红的样子,");
ws.write("更喜欢你气喘吁吁的样子。");
// 关闭写入流通道
ws.close();

四、文件读取操作

异步读取:readFile()
同步读取:readFileSync()

  • 通过程序从文件中取出其中的数据
const fs = require("fs");
fs.readFile("目标文件路径", (err, data) => {if(err){console.log(err)return;}// 读取成功后的内容console.log(data.toString())
})

应用场景: 电脑开机、程序运行、编根器打开文件、查看图片、放视频、放音乐、Git查看日志、上传文件、查找聊天记录等。

五、文件流式读取操作

const fs = requrie("fs");
// 创建读取流对象
const rs = fs.createReadStream("目标文件路径");
// 绑定 data 事件,chunk 表示文件块儿
rs.on("data", chunk => {console.log(chunk);
})
// end 可选事件
rs.on("end", () => {console.log("文件读取成功!");
})

六、文件复制操作

  • 方式一
// 先读取文件,再把读取到的内容写入到另一个文件中。
const fs = require("fs");
const data = fs.readFileSync("源文件路径");
fs.writeFileSync("目标文件路径", data);
  • 方式二(推荐)
// 通过流式操作,占用内存空间少
const fs = requrie("fs");
const rs = fs.createReadStream("源文件路径");
const ws = fs.createWriteStream("目标文件路径");
// 绑定 data 事件
fs.on("data", chunk => {ws.write(chunk);
})

七、文件重命名和移动操作

异步操作:rename(oldPath, newPath, callback)
同步操作:renameSync(oldPath, newPath)

// 通过 rename 完成文件重命名
const fs = require("fs");
fs.rename("./index.html", "./main.html", err => {if(err){console.log(err);return;}console.log("文件重命名成功!");
})
// 通过 rename 完成文件移动
const fs = require("fs");
fs.rename("./index/index.html", "./main/index.html", err => {if(err){console.log(err);return;}console.log("文件移动成功!");
})

八、文件删除操作

异步删除:unlink(path, callback)
同步删除:unlinkSync(path)

  • 方式一
const fs = requrie("fs");
fs.unlink("要删除的文件路径", err => {if(err){console.log(err);return;}console.log("文件删除成功!");
})

异步删除:rm(path, callback)
同步删除:rmSync(path)

  • 方式二
const fs = requrie("fs");
fs.rm("要删除的文件路径", err => {if(err){console.log(err);return;}console.log("文件删除成功!");
})

九、文件夹操作

创建文件夹:mkdir()

const fs = require("fs");
fs.mkdir("要创建的文件夹", err => {if(err){console.log(err);return;}console.log("文件夹创建成功!");
})

递归创建文件夹(多级文件夹目录):

const fs = require("fs");
fs.mkdir("./a/b/c", { recursive: true }, err => {if(err){console.log(err);return;}console.log("文件夹创建成功!");
})

读取文件夹:readdir()

const fs = require("fs");
fs.readdir("./index", (err, data) => {if(err){console.log(err);return;}// 获取目标文件夹当中资源名称列表console.log(data);
})

删除文件夹:rmdir()

const fs = require("fs");
fs.rmdir("./index", err => {if(err){console.log(err);return;}console.log("删除成功!");
})

递归删除文件夹(多级文件夹目录):

const fs = require("fs");
fs.rm("./index", { recursive: true }, err => {if(err){console.log(err);return;}console.log("删除成功!");
})

十、查看资源信息

const fs = require("fs");
// stat status缩写 状态
fs.stat("./index/index.html", (err, data) => {if(err){console.log(err);return;}console.log(data); // 获取文件资源信息console.log(data.isFile()); // true 是否为文件console.log(data.isDirectory()); // false 是否为文件夹
})
http://www.lryc.cn/news/109960.html

相关文章:

  • LIN协议总结
  • Redis BigKey案例
  • ThinkPHP v6.0.8 CacheStore 反序列化漏洞
  • Spring 事务详解(注解方式)
  • 华为云waf 使用场景
  • ?.的写法 后缀修饰符
  • org.apache.hadoop.hive.ql.exec.DDLTask. show Locks LockManager not specified解决
  • Adaptive autosar 都有哪些模块?各有什么功能?
  • C++ 动态内存分配
  • 设计模式——面向对象的7大设计原则
  • 智慧防汛,数字科技的力量
  • “中国软件杯”飞桨赛道晋级决赛现场名单公布
  • JDBC处理批量数据提高效率
  • 使用css和js给按钮添加微交互的几种方式
  • react面试之context的value变化时,内部所有子组件是否变化
  • 使用okHttp不走代理问题
  • python moviepy 自动化音视频处理实践
  • 聊聊混合动力汽车和纯电骑车的优势和劣势
  • 算法训练Day39|62.不同路径 ● 63. 不同路径 II
  • react中hooks分享
  • LeetCode1207. 独一无二的出现次数
  • 【maven】构建项目前clean和不clean的区别
  • Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer
  • 从零开始理解Linux中断架构(24)软中断核心函数__do_softirq
  • 【云原生】Kubernetes中deployment是什么?
  • sk_buff操作函数学习
  • conda create时候出现JSONDecoderError解决方法
  • Electron 工具进程utilityProcess 使用中遇到的坑点汇集
  • JdbcTemplate
  • PROFINET转TCP/IP网关profinet网线接头接法