您现在的位置是:网站首页> 编程资料编程资料
Node.js 操作本地文件及深入了解fs内置模块_node.js_
2023-05-24
415人已围观
简介 Node.js 操作本地文件及深入了解fs内置模块_node.js_
前言
node.js作为服务端应用,肯定少不了对本地文件的操作,像创建一个目录、创建一个文件、读取文件内容等都是我们开发中经常需要用到的功能
这篇文章我们将深入学习node的内置模块:fs文件操作模块,并使用它来操作本地文件,让我们开始吧!
一、目录操作
创建目录
语法:
fs.mkdir(path[, options], callback)
参数:
path- 文件路径options配置对象,属性有:recursive是否以递归的方式创建目录(创建嵌套目录),默认为falsemode设置目录权限,默认为 0777( Windows 不支持)
callback回调函数,参数如下:err错误信息path仅在options配置recursive为true时出现,表示所创建的顶层目录的绝对路径
演示:
const fs = require("fs"); // 创建文件夹 fs.mkdir("./blog", (err) => { if (err) { console.log(err); } else { console.log("创建blog目录成功!"); } });
我们无法直接创建嵌套的目录:

想要创建嵌套目录,需要配置options 对象:
// 创建嵌套文件夹 fs.mkdir("./blog/one", { recursive: true }, (err, path) => { if (err) { console.log(err); } else { console.log("创建blog目录成功!"); console.log("path参数出现", path); } });
目录重命名
语法:
fs.rename(oldPath, newPath, callback)
参数:
- oldPath 老的名字
- newPath 新的名字
- callback 回调函数,参数如下:
- err 错误信息
演示:
// 文件夹重命名 fs.rename("./blog", "./newBlog", (err) => { if (err) { console.log(err); } else { console.log("重命名成功!"); } });
读取目录
语法:
fs.readdir(path[, options], callback)
参数:
path目录路径options可以是指定编码格式的字符串,也可以是具有以下属性的对象encoding:指定编码格式,默认值: ‘utf-8’withFileTypesfiles数组是否包含对象,默认值:false
callback回调函数err:错误信息files:目录里的内容,数组格式
演示:
// 读取目录信息 fs.readdir("./newBlog", (err, data) => { if (err) { console.log("err", err); } else { // 数组结构:包含目录下的所有文件名 console.log("data", data); } });
删除目录
语法:
fs.rmdir(path[, options], callback)
参数:
path- 文件路径callback回调函数,参数如下:err错误信息
演示:

注意: 在目录里面有内容时,是无法直接删除该目录的,需要提前将目录下的所有内容给删掉,删除文件会在下面讲到:

二、文件操作
创建文件
使用fs.writeFile方法创建一个文件并写入内容,如果该文件本来就存在,则会替换文件原本的内容:
// 创建文件并写入内容 // 需要提前有blog目录 fs.writeFile("./blog/one.txt", "hello", (err) => { if (err) { console.log(err); } else { console.log("文件创建成功!"); } });创建文件:

创建的内容:

注意: 使用writeFile时,如要原本没有需要创建的这个文件,则writeFile会新建这个文件并向其中写入指定内容,但如果原本有这个文件,则writeFile会将原本的这个文件内容替换成我们指定的内容
我们可以在循环中批量写入文件:
// 批量写入文件 for (let i = 0; i < 10; i++) { fs.writeFile(`./blog/${i}.txt`, `blog-${i}`, (err) => { if (err) { console.log(err); } else { } }); }
追加文件内容
使用fs.appendFile方法向一个文件内追加内容:
// 给文件追加内容 fs.appendFile("./blog/one.txt", "\nworld", (err) => { if (err) { console.log(err); } else { console.log("内容追加成功!"); } });上面的代码将在
blog目录下的one.txt中另起一行追加world的内容,\n表示换行,同时也支持其它的转义符号

读取文件内容
使用fs.readFile方法读取文件内容:
// 读取文件内容 fs.readFile("./blog/one.txt", (err, data) => { if (err) { console.log(err); } else { console.log(data); } });
默认读取的内容是nodejs的Buffer数组格式,我们可以在获取数据时通过toString将其转化成字符串:

也可以直接在读取文件时指定读取的编码格式:

删除文件
使用fs.unlink方法删除文件:
// 删除文件; fs.unlink("./blog/one.txt", (err) => { if (err) { console.log(err); } else { console.log("删除成功!"); } });
三、 读取文件/目录信息
使用fs.stat可以用来获取指定路径的内容的详细信息,包括文件大小、创建时间等:
// 读取文件/目录信息 fs.stat("./blog/one.txt", (err, stats) => { if (err) { console.log(err); } else { console.log("stats", stats); } });
回调函数中的stats参数会接收到文件的详细信息对象,其中各个属性表示的含义如下:
Stats { // 包含文件的设备的数值型标识 dev: 641331036, // 描述文件类型和模式的位域 mode: 33206, // 文件的硬链接数量 nlink: 1, // 文件拥有者的数值型用户标识 uid: 0, // 拥有文件的群组的数值型群组标识 gid: 0, // 如果文件表示设备,则为数字设备标识符 rdev: 0, // i/o 操作的文件系统块大小 blksize: 4096, // 文件的文件系统特定的“inode”号 ino: 281474979034994, // 文件的字节大小 size: 12, // 分配给文件的块的数量 blocks: 0, // 指示上次访问此文件的时间戳 atimeMs: 1661836850563.044, // 指示该文件最后一次修改的时间戳 mtimeMs: 1661836850557.057, // 指示文件状态最后一次更改的时间戳 ctimeMs: 1661836850557.057, // 指示此文件创建时间的时间戳 birthtimeMs: 1661836842506.9233, // 表示文件最后一次被访问的时间 atime: 2022-08-30T05:20:50.563Z, // 表示文件最后一次被修改的时间 mtime: 2022-08-30T05:20:50.557Z, // 表示文件状态最后一次被改变的时间 ctime: 2022-08-30T05:20:50.557Z, // 表示文件的创建时间 birthtime: 2022-08-30T05:20:42.507Z }stats还有如下的常用方法:
stats.isDirectory()判断该内容是否是一个目录stats.isFile()判断该文件是否是一个常规文件
四、同步方法
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- 微信小程序实现扫雷游戏_javascript技巧_
- Vue表单快速上手_vue.js_
- vue项目如何引入element ui、iview和echarts_vue.js_
- Node处理CPU密集型任务有哪些方法_node.js_
- 如何使用 Node.js 将 MongoDB 连接到您的应用程序_node.js_
- 一文理解Redux及其工作原理_React_
- React项目中使用Redux的 react-redux_React_
- Vue.js 状态管理及 SSR解析_vue.js_
- Vue.js 前端路由和异步组件介绍_vue.js_
- JavaScript变量中var,let和const的区别_javascript技巧_
