【Path的使用】Node.js中的使用Path模块操作文件路径

在这里插入图片描述

😁 作者简介:一名大四的学生,致力学习前端开发技术
⭐️个人主页:夜宵饽饽的主页
❔ 系列专栏:Node.js
👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气

​🔥​前言:

这是有关node.js中的path路径模块的使用,在node中操作文件时候,了解path的API对我们非常有帮助,这是我学习Node的笔记,希望可以帮助到大家,欢迎大家的补充和纠正

文章目录

  • Path(路径)
    • 1.系统背景
    • 2.path.basename()
    • 3.path.delimiter
    • 4.path.dirname(path)
    • 5.path.extname(path)
    • 6.path.format(pathObject)
    • 7. path.isAbsolute(path)
    • 8.path.join([...paths])
    • 9.path.normalize(path)
    • 10.path.parse(path)
    • 11.path.relative(from,to)
    • 12.path.resolve([...paths])
    • 13.path.sep()

Path(路径)

1.系统背景

😄 在说node系统模块Path模块之前,我们先来了解一下路径分隔符在不同的操作系统合编程语言的背景会有什么不同

  1. 这是在window系统下的文件路径分隔符反斜杠(\)

    C:\temp\hello.html
    

    也可以使用正斜杠(/),例如:在命令提示符(Command Prompt)或 PowerShell 中

    C:/Users/Username/Documents/example.txt
    

    但是,并非所有的 Windows 应用程序都支持正斜杠路径分隔符,建议大家还是使用反斜杠,因为path.setup只添加反斜杠

  2. 这是在Unix(Linux)系统下的文件路径分隔符正斜杆(/)

    C:/temp/world.html
    

以上是两种不同系统背景下的路径分隔符,接下来我们来了解编程语言背景下的分隔符使用,在js语言中字符串类型存在一种转义符,而且转义符都是以” \ “开始的,因为这种背景下,所以我们想表示正常的反斜杠就需要一些变动了

js语言中使用” ( \ \ )“,双反斜杠来表示反斜杠

const str='C:\\temp\\file.html'
console.log(str)
//C:\temp\file.html

2.path.basename()

概念: 用于返回一个路径的最后一部分,也就是文件名

语法:

path.basename(path[,ext])

参数:

  • path (必选): 要提取文件名的路径字符串
  • ext (可选): 用于指定要排除的文件扩展名。如果指定了这个参数,那么在返回文件名时将不包括指定的文件扩展名。

例子:

console.log(path.basename('C:\\temp\\myfile.html'));
//myfile.html

console.log(path.basename('C:\\pemp\\hello.html','.html'))
//hello

3.path.delimiter

概念: 提供特定平台的路径分隔符

  • Windows上是:;
  • 类Unix系统上是::

例子

//在Windows系统上
//模拟环境变量中的PATH系统变量的值
const PATH="C:\Windows\system32;C:\Windows;C:\Program Files\node"
console.log(PATH.split(path.delimiter))
//[ 'C:Windowssystem32', 'C:Windows', 'C:Program Files\node' ]

4.path.dirname(path)

概念: 返回一个路径的目录名

参数:

  • path:传入的路径,是一个字符串

例子:

console.log(path.dirname('/foo/bar/baz/li'))
///foo/bar/baz

5.path.extname(path)

概念: 返回路径的扩展名,即从路径的最后一部分中的最后一个.(句号)字符到字符串结束

❗️ 注意

  • 可能路径的最后一部分没有.(句号),你们就返回空字符串
  • 可能路径的第一个字符是 . ,那么也返回空字符串

例子:

console.log(path.extname('index.html'));
//.html

console.log(path.extname('meta.coffee.md'));
//.md

console.log(path.extname('index'));
//''

console.log(path.extname('index.'));
//.

console.log(path.extname('.index'));
//''

6.path.format(pathObject)

概念: 从一个对象返回一个路径字符串,即是将对象转换为路劲字符串

参数:

  • pathObject
    • dir:包含文件的目录的路劲
    • root:包含路径的根目录路径
    • base:包含文件名的部分
    • ext:包含文件扩展名的部分
    • name:包含文件名但不包含扩展名的部分

⭐️ pathObject 提供的属性有组合时,有些属性的优先级比其他的高:

  • 如果提供了 pathObject.dir,则 pathObject.root 会被忽略
  • 如果提供了 pathObject.base 存在,则 pathObject.extpathObject.name 会被忽略

例子:

const path=require('path')

//如果提供dir,root和base,则返回`${dir}${path.sep}${base}`
//root会被忽略
const strPath=path.format({
    root:'\ignored',
    dir:'\\home\\user\\dir',
    base:'file.txt'
})

console.log(strPath);
// \home\user\dir\file.txt



//如果没有提供dir 则root会被使用
//如果只提供了 `root` 或 `dir` 等于 `root`,那么生成的路径字符串中不会包含平台特定的路径分隔符。
//ext会被忽略
const strPath2=path.format({
    root:'\\',
    base:'file.txt',
    ext:'\\ignored'
})
//对于以上的例子来说,如果生成的路径包含分隔符先strPath一样,那么结果
// 就会变成双斜杠,例如://file.txt,
console.log(strPath2)
// \file.txt

//如果没有指定base则 name+ext会被使用
const strPath3=path.format({
    root:'\\',
    name:'file',
    ext:'.txt'
})

console.log(strPath3)
// \file.txt

7. path.isAbsolute(path)

概念: 判定路径path是否为一个绝对路径

⭐️ 如果给定的path是一个长度为零的字符串,则返回false

例子:

path.isAbsolute('C:\\foo\\..'); // true
path.isAbsolute('bar\\baz');    // false

8.path.join([…paths])

概念: 使用平台特定的分隔符把全部给定的path片段连接到一起。并规范化生成的路径

⭐️ 参数:如果任意参数路径不是字符串会报错

例子:

const path=require('path')

const strPath=path.join('/foo','bar','bas/a','ta')
console.log(strPath);
// \foo\bar\bas\a\ta

9.path.normalize(path)

概念: 规范化给定的路径path,并解析 ...

例子:

path.normalize('C:\\temp\\\\foo\\bar\\..\\');
// 返回: 'C:\\temp\\foo\\'

10.path.parse(path)

概念: 返回一个对象,对象的属性表示路径的path的元素,尾部文件俺分隔符会被忽略,与path.format()方法效果相反

例子:

const str1='C:\\home\\user\\dir\\hello.md'
console.log(path.parse(str1));

/**
一下的对象的属性于path.format参数是一样的
{
  root: 'C:\\',
  dir: 'C:\\home\\user\\dir',
  base: 'hello.md',
  ext: '.md',
  name: 'hello'
}
**/

11.path.relative(from,to)

概念: 返回从from到to的相对路径(基于当前工作目录)

❗️ 注意:

  • 如果from 到 to 各自解析到同一路径(调用path.resolve()),则返回一个长度为零的字符串
  • 如果from 到 to传入了一个长度为零的字符串,则当前工作目录会被用于代替长度为零的字符串

例子:

const path=require('path')

console.log(path.relative('C:\\bar\\test\\aa','C:\\bar\\active\\bb'))
//..\..\active\bb

12.path.resolve([…paths])

概念: 把一个路径或者路径片段的序列解析为一个绝对路径

给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo/barbaz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz

❗️ 注意:

  • 如果处理完全部给定的 path 片段后还未生成一个绝对路径,则当前工作目录会被用上
  • 生成的路径是规范化后的,且末尾的斜杠会被删除,除非路径被解析为根目录。
  • 长度为零的 path 片段会被忽略。
  • 如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径。

例子:

console.log(path.resolve('\\foo\\bar','.\\baz'));
// C:\foo\bar\baz

console.log(path.resolve());
//C:\vs\everday\node_practice

console.log(path.resolve('\\foo\\bar','\\temp\\file\\'));
//C:\temp\file

console.log(path.resolve('com','static_file\\png','..\\gif\\image.gif'));
//C:\vs\everday\node_practice\com\static_file\gif\image.gif

13.path.sep()

概念:提供平台特定的路径片段分隔符

  • Windows上是 \
  • 类Unix系统上是 /

例子:

console.log('foo\\bar\\baz'.split(path.sep));
//[ 'foo', 'bar', 'baz' ]

⭐️ 在 Windows 上,斜杠字符(/)和反斜杠字符(\)都可作为路径分隔符; 但 path 的方法只添加反斜杠(\)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/293907.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode算法系列| 12. 整数转罗马数字

目录 1.题目2.题解C# 解法一:模拟C# 解法二:硬编码数字 1.题目 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#xff0…

运算放大器(六):I-V 转换

1、跨阻放大器 放大器类型是根据其输入-输出信号的类型定义。假设放大器增益 (X:输入,Y:输出)。在电学范畴,由于用电压或电流表征一个信号,当输入信号为电流,输出信号为电压时&#…

MacOS14系统中Topaz Photo AI无法启动解决方法

MacOS14系统,在使用Topaz Photo AI是时无法启动,或者在 Mac电脑上导入图像后,Topaz Photo AI 应用程序窗口可能会冻结,怎么解决呢? 退出Topaz Photo AI for mac软件 回到电脑桌面,点击菜单栏前往-前往文件…

Prometheus 不能访问k8s的中的一些metrics的问题(controller-manager、scheduler、etcd)

主要有三个点 controller-manager、scheduler、etcd 参考: https://www.cnblogs.com/ltaodream/p/15448953.html kube-scheduler 在每台master节点执行 vim /etc/kubernetes/manifests/kube-scheduler.yaml 将 --bind-address127.0.0.1 改为 --bind-address…

Image - 体积最小的 base64 encode 1*1透明图片,透明背景图片base64编码

背景 前端开发时&#xff0c;有些<img>标签的src属性的值来源于接口&#xff0c;在接口获取结果之前&#xff0c;这个src应该设置为什么呢&#xff1f; 误区&#xff1a;设置为# 有人把src设置为<img src"#" />。 这是有问题的&#xff0c;浏览器解析…

理解UML中的依赖关系

理解UML中的依赖关系 在面向对象的设计中&#xff0c;理解各种类之间的关系对于构建一个清晰、可维护的系统至关重要。UML&#xff08;统一建模语言&#xff09;为我们提供了一种可视化这些关系的方式。今天&#xff0c;我们将深入探讨UML中的依赖关系&#xff08;Dependency&a…

脑电范式学习(一):Psychopy安装

脑电范式学习&#xff08;一&#xff09;&#xff1a;Psychopy安装 1 引言2 Psychopy软件3 安装教程4 花活儿5 总结 1 引言 可能有人会疑惑&#xff1a;为什么要去学Psychopy&#xff1f;Psychopy有什么好的&#xff1f; 首先&#xff0c;要告诉大家这么一个情况&#xff1a;现…

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建

【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 概述-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行环境搭建-CSDN博客 【大数据进阶第二阶段之Hadoop学习笔记】Hadoop 运行模式-CSDN博客 1、模板虚拟机环境准备 1.1、 hadoop100 虚拟机配置要求如下 &…

拟杆菌在肠道感染中的矛盾作用

谷禾健康 拟杆菌门细菌是革兰氏阴性菌的代表&#xff0c;具有外膜、肽聚糖层和细胞质膜。它们无氧呼吸的主要副产物是乙酸、异戊酸和琥珀酸。是最耐氧的厌氧菌之一。 参与人体结肠中许多重要的代谢活动包括碳水化合物的发酵、含氮物质的利用以及胆汁酸和其他类固醇的生物转化。…

Python random模块(获取随机数)常用方法和使用例子

嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 random.random random.random()用于生成一个0到1的随机符点数: 0 < n < 1.0 random.uniform random.uniform(a, b)&#xff0c;用于生成一个指定范围内的随机符点数&#xff0c;两个参数其中一个是上限&#xff0c;一…

【大数据】安装 Zookeeper 单机版

安装 Zookeeper 单机版 下面安装 Zookeeper&#xff0c;由于它是 Apache 的一个顶级项目&#xff0c;所以域名是 zookeeper.apache.org&#xff0c;所有 Apache 的顶级项目的官网都是以项目名 .apache.org 来命名的。 点击 Download 即可下载&#xff0c;这里我们选择的版本是 …

基于数据库和NER构建知识图谱流程记录

文章目录 环境准备拓扑设计构建流程设计文件流设计交互解析算法实现数据库交互NER解析相似度计算 基于数据库的文件生成从数据库中读取字段将字段后处理后保存为文件 基于文件的知识图谱构建bug修改与算法优化图数据库连接问题批量构建知识图谱问题批量删除边问题空值处理问题去…

使用pnnx将Torch模型转换为ncnn

1. 引言 以往我们将Torch模型转换为ncnn模型&#xff0c;通常需经过Torch–>onnx&#xff0c;onnx–>ncnn两个过程。但经常会出现某些算子不支持的问题。 ncnn作者针对该问题&#xff0c;直接开发一个Torch直接转换ncnn模型的工具 (PNNX)&#xff0c;以下为相关介绍及使…

【SpringBoot系列】springboot中拦截器Interceptor使用

🤵‍♂️ 个人主页:@香菜的个人主页,加 ischongxin ,备注csdn ✍🏻作者简介:csdn 认证博客专家,游戏开发领域优质创作者,华为云享专家,2021年度华为云年度十佳博主 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收…

目标检测中的常见指标

概念引入&#xff1a; TP&#xff1a;True Positive IoU > 阈值 检测框数量 FP: False Positive IoU < 阈值 检测框数量 FN: False Negative 漏检框数量 Precision:查准率 Recall:查全率&#xff08;召回率&#xff09; AP&am…

【EI会议征稿通知】2024年第九届智能计算与信号处理国际学术会议(ICSP 2024)

2024年第九届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09; 2024年第八届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09;将在西安举行&#xff0c; 会期是2024年4月19-21日&#xff0c; 为期三天, 会议由西安科技大学主办。 欢迎参会&…

浅谈有源滤波器在有色工业中的应用

贾丽丽 安科瑞电气股份有限公司 上海嘉定 201801 文摘:介绍了谐波的危害及类型&#xff0c;分析了有源滤波器的原理。 关键词:谐波&#xff1b;无源滤波器&#xff1b;有源滤波器 0引言 目前&#xff0c;许多变电所的负荷中含有大量的非线性负荷&#xff0c;如整流装置、交…

Python中User-Agent的重要作用及实际应用

摘要&#xff1a; User-Agent是HTTP协议中的一个重要字段&#xff0c;用于标识发送请求的客户端信息。在Python中&#xff0c;User-Agent的作用至关重要&#xff0c;它可以影响网络请求的结果和服务器端的响应。将介绍User-Agent在Python中的重要作用&#xff0c;并结合实际案…

【CMake】3.单项目单模块添加第三方依赖包示例工程

CMake 示例工程代码 https://github.com/LABELNET/cmake-simple 单项目单模块 - 添加第三方依赖示例工程 https://github.com/LABELNET/cmake-simple/tree/main/simple-deps 1. 单模块工程 第三方依赖 CMake 单模块工程&#xff0c;这是一个示例工程 simple-deps , 项目…

个人调用OCR

一、自己训练模型 二、调用现成API 此处介绍百度智能云API&#xff0c;因为有免费次数。&#xff08;原来一些网址在百度不是默认显示网址的&#xff0c;而是自己的网站名字&#xff09; 首页找到OCR 每个人每月能用1K次。&#xff08;有详细的API文档说明&#xff0c;不过跟…