【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.htmlconsole.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'));
//.htmlconsole.log(path.extname('meta.coffee.md'));
//.mdconsole.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\bazconsole.log(path.resolve());
//C:\vs\everday\node_practiceconsole.log(path.resolve('\\foo\\bar','\\temp\\file\\'));
//C:\temp\fileconsole.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 的方法只添加反斜杠(\)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins集成部署java项目

文章目录 Jenkins简介安装 Jenkins简介 Jenkins能实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。 官网 安装 在官网下载windows版本的Jenkins 但是我点击这里浏览器没有反应&#xff0…

Vue3-38-路由-路由的懒加载

什么是路由的懒加载 一句话概括 : 懒加载,就是在初次用到的时候才执行加载;而非一上来就全部加载完毕。优点 : 可以提高项目的访问效率。因为一上来不用加载所有的资源。建议 : 项目中的所有路由配置都配置为 懒加载…

使用 KubeSphere 与极狐GitLab 打造云原生持续交付系统

极狐GitLab 简介 极狐GitLab 是一个一体化的 DevOps 平台,可以简单理解为 GitLab 在国内的“发行版”。是由极狐(GitLab)公司推出的产品(极狐(GitLab)公司是以“中外合资3.0”模式成立的公司,在国内独立运营,为国内用户提供适合本…

test mutation-00-变异测试概览

拓展阅读 test 系统学习-04-test converate 测试覆盖率 jacoco 原理介绍 test 系统学习-05-test jacoco 测试覆盖率与 idea 插件 test 系统学习-06-test jacoco SonarQube Docker learn-29-docker 安装 sonarQube with mysql Ubuntu Sonar 突变测试是什么? …

2024你好!

在刚刚过去的一年里,科技行业犹如璀璨的星辰照亮了全球的进步之路。特别是在人工智能的疆域中,大模型技术犹如破晓的曙光,以其数十亿乃至千亿级别的参数力量,掀起了前所未有的变革浪潮。 2023年,大模型技术无疑成为了人…

谷歌浏览器启用实时字幕功能

在 Chrome 中使用“实时字幕”功能 - Google Chrome帮助 在 Chrome 中使用“实时字幕”功能 从计算机上的 Chrome 浏览器中,您可以使用“实时字幕”功能自动为视频、播客、游戏、直播、视频通话或其他音频媒体生成字幕。音频和字幕均在本地处理,并会保…

K8S学习指南(64)-K8S源代码走读之Kubelet

文章目录 前言Kubelet 的代码结构Kubelet 的核心逻辑1. Pod 生命周期管理1.1 Pod 启动逻辑1.2 Pod 状态管理1.3 Pod 事件处理 2. 容器启动和监控2.1 容器启动逻辑2.2 容器监控 3. 容器网络和存储3.1 容器网络3.2 容器存储 4. 资源管理4.1 资源分配 5. 启动和注册 Kubelet5.1 启…

【动态规划】【字符串】132.分割回文串 II

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 字符串 LeetCode132. 分割回文串 II 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文。 返回符合要求的 最少分割次数 。 示例 1: 输入&#x…

基于R语言(SEM)结构方程模型教程

详情点击链接:基于R语言(SEM)结构方程模型教程 01、R/Rstudio (2)R语言基本操作,包括向量、矩阵、数据框及数据列表等生成和数据提取等 (3)R语言数据文件读取、整理(清洗)、结果存储等(含tidve…

提升图像分割精度:学习UNet++算法

文章目录 一、UNet 算法简介1.1 什么是 UNet 算法1.2 UNet 的优缺点1.3 UNet 在图像分割领域的应用 二、准备工作2.1 Python 环境配置2.2 相关库的安装 三、数据处理3.1 数据的获取与预处理3.2 数据的可视化与分析 四、网络结构4.1 UNet 的网络结构4.2 UNet 各层的作用 五、训练…

Simply简洁博客主题源码 | EmlogPro主题模版

Simply是一款简约风格的Emlog博客模板,响应式布局、界面简单大方,实用性强! 支持夜间模式,采用localStorage存储配置。IOS系统下支持随系统自动切换浅/深色模式。 文章页支持显示文章字数及阅读时间。 支持http/https 响应式主…

基于PyTorch的Transformer组件实现

最近看了不少介绍LLM工作原理的文章,发现每一篇都会试图跟读者讲明白作为baseline的Transformer架构到底长啥样。但是好像比较少有代码实现的示例和具体的例子帮助理解。于是自己也想尝试着写一篇含有代码实现和具体例子解释的文章,希望能够给喜欢编程朋…

fmincon函数求解非线性超越方程的学习记录

最近的算法中用到了fmincon函数,寻找多变量非线性方程最小值的函数;因此学习一下; fmincon函数的基础语法如下所示: fmincon函数是为了求解下列方程的最小值; b 和 beq 是向量,A 和 Aeq 是矩阵&#xff0c…

2024年最新51单片机+Proteus嵌入式开发入门实战完整版教程

我们为什么要学嵌入式开发? 嵌入式系统是一种专为特定任务或特定应用设计的计算机系统。与通用计算机系统不同,嵌入式系统通常具有更小的体积、更低的功耗和更强的可靠性。由于这些特点,嵌入式系统广泛应用于工业控制、医疗设备、智能家居、…

【C++进阶04】STL中map、set、multimap、multiset的介绍及使用

一、关联式容器 vector/list/deque… 这些容器统称为序列式容器 因为其底层为线性序列的数据结构 里面存储的是元素本身 map/set… 这些容器统称为关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是<key, value>结构的键值对 在数据检索时…

JVM工作原理与实战(七):类的生命周期-初始化阶段

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、类的生命周期 1.加载&#xff08;Loading&#xff09; 2.连接&#xff08;Linking&#xff09; 3.初始化&#xff08;Initialization&#xff09; 4.使用&#xff08;Using&…

canvas文字设置(含最大宽度)的示例

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

Linux tty命令教程:掌握Linux终端的使用(附案例详解和注意事项)

Linux tty命令介绍 tty命令在Linux中是一个简单的实用程序&#xff0c;用于检查连接到标准输入的终端。tty是“teletypewriter”的缩写&#xff0c;但通常被称为终端&#xff0c;它允许您通过将数据&#xff08;您的输入&#xff09;传递给系统并显示系统产生的输出来与系统进…

springboot + vue 前后端加密传输 RSA互相加解密、加签验签、密钥对生成

参考 二、关于PKCS#1和PKCS#8格式密钥 由于Java非对称加解密、加验签都是采用PKCS#8格式的密钥&#xff0c;PKCS#1格式的密钥跑不通&#xff0c;这里先简单介绍一下两者的区别。 1、简介 PKCS#1和PKCS#8是两个不同的数字证书标准。 PKCS#1是一个公钥加密标准&#xff0c;它…

【解决|三方工具】导入 XChart 后提示丢失关于 TMPPro 工具引用

开发平台&#xff1a;Unity 2021 版本 插件版本&#xff1a;XChart 3.0&#xff1a;官方文档 - https://github.com/XCharts-Team/XCharts   问题描述 导入 XChart 插件至 Unity 中出现 目录&#xff1a;Component、Theme 等提示丢失 TMPPro&#xff08;TextMeshPro 工具&…