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

 更新时间:2024年03月19日 10:07:50   作者:扶苏1002  
在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题,所以本文给大家介绍了Nodejs中fs文件系统模块的路径动态拼接的问题和解决方案,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、问题和解决方案

在使用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路径动态拼接的资料请关注程序员之家其它相关文章!

相关文章

  • nodejs的10个性能优化技巧

    nodejs的10个性能优化技巧

    在我接触JavaScript(无论浏览器还是NodeJS)的时间里,总是遇到有朋友有多线程的需求。而在NodeJS方面,有朋友甚至直接说到,NodeJS是单线程的,无法很好的利用多核CPU。那么我们在使用过程中,就要非常注意性能优化了
    2014-07-07
  • node.js +mongdb实现登录功能

    node.js +mongdb实现登录功能

    这篇文章主要介绍了node.js +mongdb实现登录功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)

    利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)

    现在我们可以用浏览器调试node.js了!!!下面这篇文章主要介绍了利用Chrome DevTools直接调试Node.js和JavaScript的方法步骤,文中介绍的很详细,需要的朋友可以参考学习,下面来一起看看吧。
    2017-02-02
  • node.js 发布订阅模式的实例

    node.js 发布订阅模式的实例

    下面小编就为大家带来一篇node.js 发布订阅模式的实例。小编觉得挺不错的,现在就想给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • node.js中的fs.readdirSync方法使用说明

    node.js中的fs.readdirSync方法使用说明

    这篇文章主要介绍了node.js中的fs.readdirSync方法使用说明,本文介绍了fs.readdirSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js中使用计时器定时执行函数详解

    Node.js中使用计时器定时执行函数详解

    这篇文章主要介绍了Node.js中使用计时器定时执行函数详解,本文使用了Node.js中的setTimeout和setInterval函数,需要的朋友可以参考下
    2014-08-08
  • 基于node简单实现RSA加解密的方法步骤

    基于node简单实现RSA加解密的方法步骤

    这篇文章主要介绍了基于node简单实现RSA加解密的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • node.js学习之base64编码解码

    node.js学习之base64编码解码

    开发者对Base64编码肯定很熟悉,是否对它有很清晰的认识就不一定了。实际上Base64已经简单到不能再简单了,这篇文章给大家通过示例代码介绍了node.js对字符串和图片base64编码解码的方法,有需要的朋友们可以通过本文来进行学习,下面来一起看看吧。
    2016-10-10
  • node.js中的fs.chown方法使用说明

    node.js中的fs.chown方法使用说明

    这篇文章主要介绍了node.js中的fs.chown方法使用说明,本文介绍了fs.chown的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node.js实现一个HTTP服务器的方法示例

    Node.js实现一个HTTP服务器的方法示例

    这篇文章主要介绍了Node.js实现一个HTTP服务器的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05

最新评论

?


http://www.vxiaotou.com