Node.js 处理 File
Node.js 处理 File
对于 file 的理解,此处
fs 模块
Node.js 提供了处理文件系统的内置模块:fs
模块,该名称是 file system 的缩写
-
内置意味着你无需从 npm 进行安装
-
可以使用 fs 模块对文件和目录执行多种操作
-
fs 模块具有 promises 命名空间,该命名空间具有所有方法的 promise 版本
这是使用 fs 模块的首选方法,它可避免回调发生混乱或避免阻止同步方法,让你可以使用 async
const fs = require("fs").promises; -
对 fs 模块执行的大多数操作都有同步和异步选项
常规使用
列出目录中的内容
-
可以使用
readdir
方法或readdirasync
方法const items = await fs.readdir("stores"); // await 属于同步和异步编程的内容【建议自行查看】,stores 是路径【建议相对路径】 console.log(items); // 列表形式输出目录中的内容,每个 item 是 Dirent 对象 -
判断文件目录,使用
Dirent
对象具有isFile
和isDirectory
方法
运用递归遍历目录树
/** * findFiles(folderName) 递归遍历目录树 * * folderName 目录路径 */ function findFiles(folderName) { const items = await fs.readdir(folderName, { withFileTypes: true }); // 获取目录中的元素 // 用 forEach 遍历 items items.forEach((item) => { if (item.isDirectory()) { // item.isDirectory() 递归条件【出口】 findFiles(`${folderName}/${item.name}`); // 递归调用 } else { console.log(`Found file: ${item.name} in folder: ${folderName}`); } }); }
创建文件和目录
可使用 fs 模块以编程方式创建、删除、复制、移动和操作系统上的文件和目录
- 创建目录 mkdir 方法,注意如果尝试创建的目录已存在将引发错误
- 创建文件使用 fs.writeFile() 方法来创建文件,如果此文件已存在则会将其覆盖
读写文件
- 从文件读取数据 fs.readFile() 方法读取文件,返回对象是一个 Buffer 对象
- 要将数据写入文件,请使用相同的 writeFile 方法,不同的是应传入要作为第三个参数写入的数据
- 将数据追加到文件,可以将标志
a
传递到 writeFile 方法来执行此操作
分析文件中的数据,JavaScript 包含用于 JSON 文件的内置分析程序,JSON.parse()
方法可以实现此目的
// 在当前目录添加 totals.txt,每次使用追加 'Hello ' await fs.writeFile( path.join(__dirname, "totals.txt"), // __dirname 一个全局常量,下面有简介 'Hello ', { flag: "a" } );
path 模块
在 Node.js 内置模块中 path
模块专用于处理路径
- 拼接路径
path.join()
方法,意义增强移植性应对不同操作系统的目录分隔符 - 确定文件扩展名
path.extname()
path.parse()
获取有关路径或文件的大多数所需信息,包含你所在的当前目录、文件的名称、文件扩展名,甚至是不带扩展名的文件名称
Node.js 内置常量
- 确认当前目录完整路径通过内置常量
__dirname
- 确认当前文件完整路径通过内置常量
__filename
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了