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

news/2024/7/11 1:05:42 标签: javascript, node.js, 前端, es6

在这里插入图片描述

😁 作者简介:一名大四的学生,致力学习前端开发技术
⭐️个人主页:夜宵饽饽的主页
❔ 系列专栏: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 的方法只添加反斜杠(\)。


http://www.niftyadmin.cn/n/5306266.html

相关文章

用友U8 Cloud smartweb2.RPC.d XML外部实体注入漏洞

产品介绍 用友U8cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型、集团型企业,提供企业级云ERP整体解决方案。它包含ERP的各项应用,包括iUAP、财务会计、iUFO cloud、供应链与质量管理、人力资源、生产制造、管理会计、资产管理&#…

java 使用 jtransforms 傅里叶库通过时域转频域实现wav 音频的加速与变慢效果

引入 maven 依赖&#xff1a;<dependency><groupId>net.sourceforge.jtransforms</groupId><artifactId>jtransforms</artifactId><version>2.4.0</version></dependency> FourierTransformTest.java&#xff1a; import edu.…

Qt元对象系统Meta-Object System

元对象系统 元对象系统是一个基于标准C++的扩展,为Qt提供了信号与槽机制、实时类型信息、动态属性系统。 元对象系统的三个基本条件:类必须继承自QObject、类声明Q_OBJECT宏、元对象编译器moc。 Qt元对象编译器(Moc)是Qt框架中的一个重要工具,用于处理Qt特有的元对象系统…

vue小程序sm4加解密方法

新建base64.js文件 (function(a){if("object"typeof exports&&"undefined"!typeof module)module.exportsa();else if("function"typeof define&&define.amd)define([],a);else{var b;b"undefined"typeof window?&q…

vue+springboot项目上传部署tomcat

下载及安装Tomcat 进入tomcat官网&#xff0c;Tomcat官网 选择需要下载的版本&#xff0c;点击下载下载路径一定要记住&#xff0c;并且路径中尽量不要有中文 下载后是压缩包 .zip&#xff0c;解压后 tomcat系统各个文件夹目录是什么意义&#xff1a; bin&#xff1a;放置的是…

【SpringCloud】7、Spring Cloud Gateway限流配置

1、限流介绍 Spring Cloud Gateway 的限流配置主要涉及到令牌桶算法的实现。令牌桶算法可以对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。 在 Spring Cloud Gateway 中,官方提供了 RequestRateLimiterGatewayFi…

数据库初始化脚本(用 truncate 命令一键清空某个数据库中全部数据表数据)

数据库初始化脚本&#xff08;用 truncate 命令一键清空某个数据库中全部数据表数据&#xff09; 1.执行下面的sql语句生成“清空数据库的sql脚本”2.执行“清空数据库的sql脚本” 在开发中&#xff0c;当数据表结构有变动或者数据库中有脏数据时&#xff0c;想要清空数据表中的…

JAVA中小型医院信息管理系统源码 医院系统源码

开发框架&#xff1a;SpringBootJpathymeleaf 搭建环境&#xff1a;jdk1.8idea/eclipsemaven3mysql5.6 基于SpringBoot的中小型医院信息管理系统&#xff0c;做的比较粗糙&#xff0c;但也实现了部分核心功能。 就诊卡提供了手动和读卡两种方式录入&#xff0c;其中IC读卡器使用…