广告:宝塔Linux面板高效运维的服务器管理软件 点击【 https://www.bt.cn/p/uNLv1L 】立即购买

在node中还有很多内置对象,可以帮助我们进行很多操作,包括对路径、文件等操作。下面本篇文章给大家介绍一下node常用内置模块中的path模块和fs模块,希望对大家有所帮助!
path模块path模块用于对路径和文件进行处理,提供了很多方法。
path.resolve有一个需求是将路径和文件名进行拼接。
const basePath = '/user/why'const filename = 'abc.txt'登录后复制
那么有人会使用字符串拼接的方式进行拼接。
const filePath = basePath + '/' + filenameconsole.log(filePath);登录后复制
这样的结果虽然没有问题,但是考虑到不同的系统,windows系统可以使用\或者\\或者/作为路径分隔符,而Mac OS、Linux的Unix操作系统使用/作为路径分隔符。
解决上述问题,我们可以使用path.resolve来进行路径的拼接。
const path = require('path')const basePath = '/user/why'const filename = 'abc.txt'const filePath = path.resolve(basePath, filename)console.log(filePath);登录后复制从路径中获取信息dirname:获取文件的父文件夹basename:获取文件名extname:获取文件扩展名const path = require('path')const filePath = '/User/haha/abc.txt'console.log(path.dirname(filePath));console.log(path.basename(filePath));console.log(path.extname(filePath));登录后复制路径拼接如果我们想要把多个路径进行拼接,但是不同的操作系统可能使用不同的分隔符,我们可以使用path.join函数。
const path = require('path')const basepath = '/User/haha'const filename = 'abc.txt'const filePath = path.join(basepath, filename)console.log(filePath);登录后复制将文件和某个文件夹拼接如果我们想要将某个文件和文件夹拼接,可以使用path.resolve。
const basepath = 'User/haha'const filename = 'abc.txt'登录后复制
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);登录后复制
我们可以看到它们的差别。
fs模块nodejs文件系统的API大都提供三种操作方式:
同步操作文件:代码会被阻塞,不会继续执行
异步回调函数操作文件:代码不会被阻塞,需要传入回调函数,当获取到结果时,回调函数执行
异步Promise操作文件:代码不会被阻塞,通过fs.promises调用方法操作,会返回一个Promise,可以通过then、catch进行处理。
读取文件状态(信息)方式一 同步操作:fs.statSync
const fs = require('fs')const filepath = './abc.txt'const info = fs.statSync(filepath)console.log('后续需要执行的代码');console.log(info);登录后复制方式二 异步操作
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 filePath = basePath + '/' + filenameconsole.log(filePath);0登录后复制文件的读写
fs.readFile(path[, options], callback):读取文件内容
fs.writeFile(path[, options], callback):往文件中写入内容
option参数:
flag: 写入的方式
encoding:字符的编码
文件的写入
const filePath = basePath + '/' + filenameconsole.log(filePath);1登录后复制
文件的读取
const filePath = basePath + '/' + filenameconsole.log(filePath);2登录后复制
如果不填写encoding,返回的结果Buffer(二进制)。
const filePath = basePath + '/' + filenameconsole.log(filePath);3登录后复制创建文件夹
使用fs.mkdir()或者fs.mkdirSync创建一个新的文件夹。
const filePath = basePath + '/' + filenameconsole.log(filePath);4登录后复制获取文件夹的内容
fs.readdir
const filePath = basePath + '/' + filenameconsole.log(filePath);5登录后复制
获取文件夹中的所有文件,此时目录如下图所示,可以使用递归。
const filePath = basePath + '/' + filenameconsole.log(filePath);6登录后复制重命名
可以使用fs.rename对文件夹进行重命名。
const filePath = basePath + '/' + filenameconsole.log(filePath);7登录后复制
更多node相关知识,请访问:nodejs 教程!
以上就是浅析node中的常用模块:path模块和fs模块的详细内容,更多请关注9543建站博客其它相关文章!


发表评论