在node中还有很多内置对象, 可以帮助我们进行很多操作, 包括对路径、文件等操作 。 下面本篇文章给大家介绍一下node常用内置模块中的path模块和fs模块, 希望对大家有所帮助!
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/06062AO2-0.jpg)
文章插图
path模块path模块用于对路径和文件进行处理, 提供了很多方法 。
path.resolve有一个需求是将路径和文件名进行拼接 。
const basePath = '/user/why'const filename = 'abc.txt'那么有人会使用字符串拼接的方式进行拼接 。
const filePath = basePath + '/' + filenameconsole.log(filePath);这样的结果虽然没有问题, 但是考虑到不同的系统, windows系统可以使用\或者\\或者/作为路径分隔符, 而Mac OS、Linux的Unix操作系统使用/作为路径分隔符 。
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/06062623X-1.png)
文章插图
解决上述问题, 我们可以使用path.resolve来进行路径的拼接 。
const path = require('path')const basePath = '/user/why'const filename = 'abc.txt'const filePath = path.resolve(basePath, filename)console.log(filePath);
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/0606264J5-2.png)
文章插图
从路径中获取信息
- dirname:获取文件的父文件夹basename:获取文件名extname:获取文件扩展名
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/06062C923-3.png)
文章插图
路径拼接如果我们想要把多个路径进行拼接, 但是不同的操作系统可能使用不同的分隔符, 我们可以使用path.join函数 。
const path = require('path')const basepath = '/User/haha'const filename = 'abc.txt'const filePath = path.join(basepath, filename)console.log(filePath);
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/0606264b9-4.png)
文章插图
将文件和某个文件夹拼接如果我们想要将某个文件和文件夹拼接, 可以使用path.resolve 。
const basepath = 'User/haha'const filename = 'abc.txt'
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/06062A424-5.png)
文章插图
path.resolve和path.join一样也可以进行路径的拼接, 那么它们的区别是什么呢?
const basepath = '../User/haha'const filename = './abc.txt'const othername = './haha.js'const filePath1 = path.join(basepath, filename, othername)console.log(filePath1);const filePath2 = path.resolve(basepath, filename, othername)console.log(filePath2);我们可以看到它们的差别 。
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/0606261I7-6.png)
文章插图
fs模块nodejs文件系统的API大都提供三种操作方式:
- 同步操作文件:代码会被阻塞, 不会继续执行
异步回调函数操作文件:代码不会被阻塞, 需要传入回调函数, 当获取到结果时, 回调函数执行
异步Promise操作文件:代码不会被阻塞, 通过fs.promises调用方法操作, 会返回一个Promise, 可以通过then、catch进行处理 。
const fs = require('fs')const filepath = './abc.txt'const info = fs.statSync(filepath)console.log('后续需要执行的代码');console.log(info);
![浅析node中的常用模块:path模块和fs模块](http://img.zhejianglong.com/220407/0606262M6-7.png)
文章插图
方式二 异步操作
fs.stat(filepath, (err, info) => { if(err) { console.log(err); return } console.log(info); console.log(info.isFile()); // 判断是否是一个文件 console.log(info.isDirectory()); // 判断是否是一个文件夹})console.log('后续需要执行的代码');方式三: Promise
fs.promises.stat(filepath).then(info => { console.log(info);}).catch(err => { console.log(err);})console.log('后续需要执行的代码');文件描述符node为所有打开的文件分配了一个数字型的文件描述符 。 所有文件系统操作都使用这些文件描述符来标识和跟踪每个特定的文件 。
fs.open()方法用于分配新的文件描述符fd 。 一旦被分配, 则文件描述符可用于从文件读取数据、向文件写入数据、或请求关于文件的信息 。
const fs = require('fs')fs.open('./abc.txt', (err, fd) => { if(err) { console.log(err); return } // 通过文件描述符去获取文件信息 fs.fstat(fd, (err, info) => { console.log(info); })})
推荐阅读
- 带你学习JavaScript中的File API、Streams API和Web Cryptography API
- 浅析node esmodule模式下怎么调用commonjs模块
- map在jquery中的用法是什么
- 聊聊各种可能导致 Node.js 进程退出的情况
- 浅析Node中Express的错误处理中间件
- linear-gradient 浅析CSS中怎么实现线性渐变
- 浅析广告文案的7大特点 广告文案的特点有哪些?
- 养生中的十大禁忌
- 如:ā、ě、ū、ǔ、ü、á等 输入汉语拼音中的音调符号的方法介绍欢迎阅读
- 师大中学生喜欢的礼物 初中的生日礼物是什么