Nodejs中fs文件系统模块的路径动态拼接的问题和解决方案

 更新时间:2024年03月19日 10:07:50   作者:扶苏1002  
在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题,所以本文给大家介绍了Nodejs中fs文件系统模块的路径动态拼接的问题和解决方案,需要的朋友可以参考下

一、问题和解决方案

在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题

原因: 代码在运行的时候,会以执行 node 命令运行的目录,动态拼接出被操作文件的完整路径,也就是说这里的./../参考点是node 命令运行的目录,而不是文件的目录

解决方案:

  • 在使用fs模块操作文件时,直接提供完整的路径,不要提供./或 ../开头的相对路径,从而防止路径动态拼接的问题
  • 使用内置的__dirname当前文件所处的目录)配合path.join()动态获取文件路径

二、认识__dirname

__dirname 表示当前文件所处的目录
实例

文件层级结构

image.png

index.js中

// __dirname 表示当前文件所处的目录
console.log(__dirname);  //D:\myProject\nodejs\nodejs\文件系统模块\__dirname

image.png

从打印结果我们可以看出

__dirname 表示当前文件所处的目录

三、path路径模块

3.1. 什么是path 路径模块

path 模块是 Node.js 官方提供的、用来处理路径的模块。它提供了一系列的方法和属性,用来满足用户对路径的处理需求。

  • path.join()方法,用来将多个路径片段拼接成一个完整的路径字符串
  • path.basename()方法,用来从路径字符串中,将文件名解析出来

如果要在JavaScript代码中,使用path 模块来处理路径,则需要使用如下的方式先导入它

const path = require('path')

3.2. path.join()

使用 path.join()方法,可以把多个路径片段拼接为完整的路径字符串

注意: path.join() ../代表抵消一层路径

// 导入path模块
const path = require("path");

const pathStr = path.join("/a", "/b/c", "../", "./d", "e");
// "../"抵消了/c这一层路径
console.log(pathStr); //\a\b\d\e

四、path路径模块配合__dirname动态获取文件路径

实例

文件层级结构

image.png

成绩.txt

image.png

index.js

// 导入文件系统模块
const fs = require("fs");
// 导入path模块
const path = require("path");
// __dirname当前文件所处的目录
fs.readFile(path.join(__dirname, "/成绩.txt"), "utf8", function (err, dataStr) {
  if (err) return console.log(err.message); //读取失败
  console.log(dataStr); //读取成功
});

image.png

以上就是Nodejs中fs文件系统模块的路径动态拼接的问题和解决方案的详细内容,更多关于Nodejs fs路径动态拼接的资料请关注脚本之家其它相关文章!

相关文章

  • Node.js中Sequelize hook的使用方法小结

    Node.js中Sequelize hook的使用方法小结

    Sequelize 提供了多个 hook,用于在执行数据库操作时执行一些自定义逻辑,本文为大家整理了一些常用的 Sequelize hook 列表及其作用,希望对大家有所帮助
    2024-02-02
  • axios基本用法教程示例详解

    axios基本用法教程示例详解

    这篇文章主要为大家介绍了axios基本用法示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 利用Node.js批量抓取高清妹子图片实例教程

    利用Node.js批量抓取高清妹子图片实例教程

    这篇文章主要给大家介绍了关于利用Node.js批量抓取高清妹子图片的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们可以直接将代码复制进行使用,下面随着小编来一起学习学习吧
    2018-08-08
  • node.js中的url.format方法使用说明

    node.js中的url.format方法使用说明

    这篇文章主要介绍了node.js中的url.format方法使用说明,本文介绍了url.format的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 使用 Node.js 模拟滑动拼图验证码操作的示例代码

    使用 Node.js 模拟滑动拼图验证码操作的示例代码

    本篇文章主要介绍了使用 Node.js 模拟滑动验证码操作的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Node.js图片处理库sharp的使用

    Node.js图片处理库sharp的使用

    这篇文章主要介绍了Node.js图片处理库sharp的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Nodejs Express 通过log4js写日志到Logstash(ELK)

    Nodejs Express 通过log4js写日志到Logstash(ELK)

    这篇文章主要介绍了Nodejs Express 通过log4js写日志到Logstash(ELK),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 安装Node.js并启动本地服务的操作教程

    安装Node.js并启动本地服务的操作教程

    今天小编就为大家分享一篇安装Node.js并启动本地服务的操作教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • nodejs实现邮件发送服务实例分享

    nodejs实现邮件发送服务实例分享

    本文给大家讲解的是简单的使用nodejs搭建邮件发送服务的一个实例,非常的好用,有需要的小伙伴可以参考下
    2017-03-03
  • 使用puppeteer爬取网站并抓出404无效链接

    使用puppeteer爬取网站并抓出404无效链接

    自动化技术可以帮助我们做自动化测试,本篇文章主要介绍了使用puppeteer爬取网站并抓出404无效链接,可以检查出无效链接,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12

最新评论