node内置模块之---path 模块

path 模块的作用

path 模块是 Node.js 的核心模块之一,提供了用于处理和转换文件路径的功能。它能帮助你在不同操作系统间处理文件路径时避免平台差异(如 Windows 和 Unix 系统使用不同的路径分隔符)

path 模块api介绍

使用场景:

  • 跨平台路径处理path 模块确保你的代码在不同操作系统中都能正确处理文件路径。
  • 文件和目录操作:当你需要动态构建文件路径(例如,处理用户上传的文件或读取特定目录中的文件时),path 模块提供了简便的工具。
  • 路径解析与规范化:使用 path.normalize 和 path.resolve 等方法确保文件路径的正确性。

1、path.join([...paths])

  • 将所有给定的路径片段连接起来,使用操作系统的路径分隔符(例如,Windows 使用反斜杠 \,Linux 使用斜杠 /)。
  • 会自动处理多余的分隔符和相对路径。
const path = require('path');
const filePath = path.join('folder', 'subfolder', 'file.txt');
console.log(filePath);  // 输出:folder/subfolder/file.txt

2、path.resolve([...paths])

  • 将给定路径序列解析为绝对路径。如果路径中没有绝对路径(以 / 或 C:\ 开头),它会从当前工作目录开始解析。
  • 该方法会“合并”所有路径片段,直到它找到第一个绝对路径。
const path = require('path');
const absolutePath = path.resolve('folder', 'subfolder', 'file.txt');
console.log(absolutePath);  // 输出类似:/Users/user/project/folder/subfolder/file.txt

3、path.normalize(p)

  • 规范化路径,消除路径中的多余部分(如 .. 和 .)以及多余的分隔符。
  • 对于路径中的相对部分(例如 .. 表示上级目录,. 表示当前目录),会进行处理和标准化。
const path = require('path');
const normalizedPath = path.normalize('folder//subfolder/../file.txt');
console.log(normalizedPath);  // 输出:folder/file.txt

4、path.isAbsolute(p)

  • 判断给定的路径是否是绝对路径。
  • 如果路径是绝对路径(例如 /Users/user/project 或 C:\Users\),返回 true,否则返回 false
const path = require('path');
console.log(path.isAbsolute('/Users/user'));  // true
console.log(path.isAbsolute('folder/file.txt'));  // false

5、path.basename(p, [ext])

  • 返回路径的最后一部分,通常是文件名。如果提供了 ext 参数,它会去掉文件名的扩展名部分。
const path = require('path');
console.log(path.basename('/folder/subfolder/file.txt'));  // file.txt
console.log(path.basename('/folder/subfolder/file.txt', '.txt'));  // file

6、path.dirname(p)

  • 返回路径的目录部分,即去掉文件名后剩余的部分。
const path = require('path');
console.log(path.dirname('/folder/subfolder/file.txt'));  // /folder/subfolder

7、path.extname(p)

  • 返回文件的扩展名(包括点 .),如果没有扩展名,则返回空字符串。
const path = require('path');
console.log(path.extname('file.txt'));  // .txt
console.log(path.extname('file'));  // (空字符串)

8、path.parse(p)

  • 将路径解析为一个对象,包含如下属性:
    • root:路径的根部分
    • dir:路径的目录部分
    • base:路径的最后一部分(文件名和扩展名)
    • name:文件名部分
    • ext:文件扩展名部分
const path = require('path');
const parsedPath = path.parse('/folder/subfolder/file.txt');
console.log(parsedPath);
// 输出:{
//   root: '/',
//   dir: '/folder/subfolder',
//   base: 'file.txt',
//   name: 'file',
//   ext: '.txt'
// }

9、path.format(p)

  • 根据给定的路径对象,将其格式化为一个路径字符串。
  • 输入对象通常是由 path.parse() 返回的解析结果。
const path = require('path');
const pathObj = {root: '/',dir: '/folder/subfolder',base: 'file.txt',name: 'file',ext: '.txt'
};
const formattedPath = path.format(pathObj);
console.log(formattedPath);  // /folder/subfolder/file.txt

10、path.relative(from, to)

  • 计算从 from 路径到 to 路径的相对路径。
  • 该方法返回一个相对于 from 的路径字符串。
const path = require('path');
const relativePath = path.relative('/folder/subfolder', '/folder/file.txt');
console.log(relativePath);  // ../file.txt

11、path.sep

  • 提供操作系统特定的路径分隔符(/ 在 Unix 系统中,\ 在 Windows 系统中)。
const path = require('path');
console.log(path.sep);  // 在 Unix 上是 '/', 在 Windows 上是 '\'

12、path.delimiter

  • 提供操作系统特定的路径分隔符(在 PATH 环境变量中)。对于 Unix 系统,分隔符是 :,而在 Windows 系统中是 ;
const path = require('path');
console.log(path.delimiter);  // 在 Unix 上是 ':', 在 Windows 上是 ';'

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

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

相关文章

电子应用设计方案85:智能 AI门前柜系统设计

智能 AI 门前柜系统设计 一、引言 智能 AI 门前柜系统旨在提供便捷、安全和智能的物品存储与管理解决方案,适用于家庭、公寓或办公场所的入口区域。 二、系统概述 1. 系统目标 - 实现无接触式物品存取,减少交叉感染风险。 - 具备智能识别和分类功能&am…

CG顶会论文阅读|《科技论文写作》硕士课程报告

文章目录 一、基本信息1.1 论文基本信息1.2 课程基本信息1.3 博文基本信息 二、论文评述(中英双语)2.1 研究问题(Research Problem)2.2 创新点(Innovation/Contribution)2.3 优点(Why this pape…

Deepseek v3 的笔记

基本概述 Deepseek v3是Deepseek发布的旗舰模型,属于607B的混合专家(MoE)模型,其中活跃参数为37B。在当前的模型领域,它堪称最佳的开源模型,性能超越了Llama 3.1 405b、Qwen和Mistral等知名模型。根据基准…

基于单片机的家庭智能垃圾桶(论文+源码)

1系统整体方案设计 本次课题为基于单片机的家庭智能垃圾桶,在此将目标功能设计如下: (1)实现垃圾桶的智能开关盖当检测到有人停留三秒以上自动开启,并当人走后自动关闭开关盖; (2&#xff0…

Niushop商城商业插件_cps联盟_包装转换_视频购物_同城配送_上门预约等插件的安装方法

一.简介 使用Niushop已经多年,积累下很多有用的常识,有人让我评价下这个系统!怎么说呢!系统是好系统因为它开源!且更新也很及时几乎是一周一更新,开发团队也很尽职,在用户群内得到很高的评价&am…

一文讲清楚HTTP常见的请求头和应用

文章目录 一文讲清楚HTTP常见的请求头和应用1. 啥是个HTTP请求头2. 常见的请求头,作用和示例3.协商缓存4.会话状态 一文讲清楚HTTP常见的请求头和应用 1. 啥是个HTTP请求头 一句话,说白了就是限定HTTP传输的一些规则参数,比如Accept&#xf…

vim 的基础使用

目录 一:vim 介绍二:vim 特点三:vim 配置四:vim 使用1、vim 语法格式2、vim 普通模式(1)保存退出(2)光标跳转(3)文本删除(4)文本查找&…

RocketMQ面试题:进阶部分

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

设计模式之桥接设计模式

简介 与适配器模式类似,桥接设计模式也是结构型模式将抽象部分与实现部分分离,使它们都可以独立的变化通俗来说,是通过组合来桥接其它的行为/维度 应用场景举例 传统方式 使用桥接设计模式之后 编码示例 /*** 抽象角色:手机*/ …

个人健康信息系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

个人交友系统|Java|SSM|JSP|

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…

每天40分玩转Django:Django Celery

Django Celery 一、知识要点概览表 模块知识点掌握程度要求Celery基础配置、任务定义、任务执行深入理解异步任务任务状态、结果存储、错误处理熟练应用周期任务定时任务、Crontab、任务调度熟练应用监控管理Flower、任务监控、性能优化理解应用 二、基础配置实现 1. 安装和…

canvas+fabric实现时间刻度尺+长方形数据展示

前言 我们前面实现了时间刻度尺&#xff0c;现在在时间刻度尺里面画一个长方形&#xff0c;长方形里面有数据展示。 效果 实现 1.先实现时间刻度尺 2.鼠标移动、按下事件监听并画出对应效果 3.在刻度尺里面画对应的长方形数据展示 <template><div><canvas…

网络安全【C10-2024.10.1】-sql注入基础

1、利用宽字节注入实现“库名-表名”的注入过程&#xff0c;写清楚注入步骤&#xff1b; 宽字节概念 1、如果一个字符的大小是一个字节的&#xff0c;称为窄字节&#xff1b; 2、如果一个字符的大小是两个及以上字节的&#xff0c;称为宽字节&#xff1b;像GB2312、GBK、GB1803…

【Domain Generalization(2)】领域泛化在文生图领域的工作之——PromptStyler(ICCV23)

系列文章目录 【Domain Generalization(1)】增量学习/在线学习/持续学习/迁移学习/多任务学习/元学习/领域适应/领域泛化概念理解第一篇大概了解了 DG 的概念&#xff0c;那么接下来将介绍 DG 近年在文生图中的应用/代表性工作。本文介绍的是 PromptStyler: Prompt-driven Sty…

MySQL 08 章——聚合函数

聚合函数是对一组数据进行汇总的函数&#xff0c;输入的是一组数据的集合&#xff0c;输出的是单个值 一、聚合函数介绍 &#xff08;1&#xff09;AVG和SUM函数 举例&#xff1a;只适用于数值类型的字段&#xff08;或变量&#xff09;AVG函数和SUM函数在计算空值时&#x…

HTML——73.button按钮

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>button按钮</title></head><body><!--button按钮&#xff1a;1.button按钮type属性&#xff1a;可以设置三个值&#xff0c;submit/reset/button,含义…

Java 数据库连接 - Sqlite

Java 数据库连接 - Sqlite PS: 1. 连接依赖库&#xff1a;[sqlite-jdbc-xxx.jar](https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc)(根据连接的数据库版本选择) 2. 支持一次连接执行多次sql语句&#xff1b; 3. 仅本地连接&#xff1b;使用说明&#xff1a; publ…

NCCL源码解读3.1:double binary tree双二叉树构建算法,相比ring环算法的优势

目录 一、双二叉树出现的原因 二、双二叉树介绍 三、双二叉树大规模性能 四、双二叉树源码解读 双二叉树注意事项 核心逻辑 源码速递 视频分享在这&#xff0c;未完待补充&#xff1a; 3.1 NCCL源码解读双二叉树构建算法&#xff0c;double binary tree相比ring环算法的…

深入理解 JVM 的垃圾收集器:CMS、G1、ZGC

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…