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

本文介绍了Node.js中path模块的基础功能,如basename、dirname、extname等,以及如何处理不同操作系统下的路径分隔符和路径操作,包括path.join、normalize、resolve等,旨在帮助开发者更高效地处理文件路径问题。
摘要由CSDN通过智能技术生成

在这里插入图片描述

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

​🔥​前言:

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

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 的方法只添加反斜杠(\)。

  • 17
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值