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.mzph.cn/bicheng/66146.shtml

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

相关文章

STM32G0B1 can Error_Handler 解决方法

问题现象 MCU上电,发送0x13帧数据固定进入 Error_Handler 硬件介绍 MCU :STM32G0B1 can:NSI1042 tx 接TX RX 接RX 折腾了一下午,无解,问题依旧; 对比测试 STM32G431 手头有块G431 官方评估版CAN 模块; 同样的…

Redis 实现分布式锁

文章目录 引言一、Redis的两种原子操作1.1 Redis 的原子性1.2 单命令1.3 Lua 脚本1.4 对比单命令与 Lua 脚本 二、Redis 实现分布式锁2.1 分布式锁的概念与需求2.1.1 什么是分布式锁?2.1.2 分布式锁的常见应用场景 2.2 基于 Redis 的分布式锁实现2.2.1 锁的获取与释…

SAP MM物料管理模块常见BAPI函数清单

【SAP系统研究】 #SAP #MM #物料管理 #函数 #BAPI 1、物料主数据 BAPI_MATERIAL_SAVEDATA 创建/更改物料主数据 BAPI_MATERIAL_SAVEREPLICA 物料主数据视图扩充 BAPI_MATERIAL_EXISTENCECHECK 检查物料主数据是否存在 BAPI_MATERIAL_GETLIST 显示物料主数据明细 BAPI_MATERIALG…

104周六复盘 (188)UI

1、早上继续看二手书的一个章节,程序开发流程、引擎、AI等内容, 内容很浅,基本上没啥用,算是复习。 最大感触就是N年前看同类书的里程碑、AI相关章节时,会感觉跟自己没啥关系, 而如今则密切相关&#xf…

(leetcode算法题)382. 链表随机节点

如果给你一个 智能记录 k行内容的小笔记本,从一本你也不知道有多少行的 C Primer 中进行摘抄,你应该怎么做才能让抄写的时候能让书中的每一行都等概率的出现在小笔记本中? 答:准备好一个公平的轮盘和一个巨大的摇奖机&#xff0c…

腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎

在当今数字化时代的汹涌浪潮中,数据已跃升为企业发展的关键要素,其高效、精准的处理成为企业在激烈市场竞争中脱颖而出的核心竞争力。腾讯云智能结构化 OCR 技术凭借其前沿的科技架构与卓越的功能特性,宛如一颗璀璨的明星,在交通、…

2025-01-04 Unity插件 YodaSheet2 —— 基础用法

文章目录 环境配置1 创建 YadeSheetData2 读取方式2.1 表格读取2.2 列表读取 3 自定义设置3.1 修改代码生成位置3.2 添加列表支持3.2.1 修改 DataTypeMapper.cs3.2.2 修改 SheetDataExtensions.cs3.2.3 修改 CodeGeneratorEditor.cs3.2.4 测试 ​ 官方文档: Unity …

matlab时频分析库

time frequency gallery

『 Linux 』高级IO (三) - Epoll模型的封装与EpollEchoServer服务器

文章目录 前情提要Epoll 的封装Epoll封装完整代码(供参考) Epoll Echo ServerEpoll Echo Server 测试及完整代码 前情提要 在上一篇博客『 Linux 』高级IO (二) - 多路转接介绍并完成了两种多路转接方案的介绍以及对应多路转接方案代码的编写,分别为SelectServer服务器与PollSe…

PDF预览插件

PDF预览插件 可用于当前页面弹窗形式查看,可增加一些自定义功能 pdf预览插件 代码块: pdfobject.js <div class="pdfwrap"><div class="item"><h3>笑场</h3><div class="tags"><p>李诞</p><i&…

【Java项目】基于SpringBoot的【新生宿舍管理系统】

【Java项目】基于SpringBoot的【新生宿舍管理系统】 技术简介&#xff1a;本系统使用采用B/S架构、Spring Boot框架、MYSQL数据库进行开发设计。 系统简介&#xff1a;管理员登录进入新生宿舍管理系统可以查看首页、个人中心、公告信息管理、院系管理、班级管理、学生管理、宿舍…

Huginn - 构建代理、执行自动化任务

文章目录 一、关于 Huginn什么是Huginn&#xff1f;Huginn 功能加入Huginn展示 二、安装1、Docker2、本地安装3、开发 三、使用Huginn代理gems四、部署1、Heroku2、OpenShiftOpenShift 在线 3、在任何服务器上手动安装4、可选设置4.1 私人开发设置4.2 启用WeatherAgent4.3 禁用…

电子应用设计方案86:智能 AI背景墙系统设计

智能 AI 背景墙系统设计 一、引言 智能 AI 背景墙系统旨在为用户创造一个动态、个性化且具有交互性的空间装饰体验&#xff0c;通过融合先进的技术和创意设计&#xff0c;提升室内环境的美观度和功能性。 二、系统概述 1. 系统目标 - 提供多种主题和风格的背景墙显示效果&…

基于Spring Boot的IT技术交流和分享平台的设计与实现源码

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的IT技术交流和分享平台的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于S…

单元测试3.0+ @RunWith(JMockit.class)+mock+injectable+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 静态变量直接赋值就好&#xff0c;没必要mock了 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上…

PADS Logic原理图中有很多页原理图,如何(怎样)删除其中一页或者多页

我们在进行PADS Logic进行原理图设计的时候&#xff0c;有时候可能遇到一次性设计了很多页的原理图&#xff0c;比如说十几页的原理图。那么我们在进行PADS Layout的时候&#xff0c;可能将这些原理图绘制两块板或者多块PCB板&#xff0c;那么这时候我们需要将其中的一张原理图…

Elasticsearch 创建索引 Mapping映射属性 索引库操作 增删改查

Mapping Type映射属性 mapping是对索引库中文档的约束&#xff0c;有以下类型。 text&#xff1a;用于分析和全文搜索&#xff0c;通常适用于长文本字段。keyword&#xff1a;用于精确匹配&#xff0c;不会进行分析&#xff0c;适用于标签、ID 等精确匹配场景。integer、long…

《GICv3_Software_Overview_Official_Release_B》学习笔记

1.不同版本的 GIC 架构及其主要功能如下图所示&#xff1a; 2.GICv2m&#xff08;Generic Interrupt Controller Virtualization Model&#xff09;是针对ARM架构的GIC&#xff08;通用中断控制器&#xff09;的一种扩展&#xff0c; GICv2m扩展为虚拟化环境中的中断管理提供了…

【QT】找不到qwt_plot.h

系统环境&#xff1a; linux 20.04 qt 6.7.2 cmake 3.22 原因&#xff1a; Qwt没有正式的FindQwt.cmake&#xff0c;Qwt也没有提供QwtConfig.cmake。而且cmake不支持qmake的配置特性&#xff0c;也不支持读取mkspecs (.prf)文件。也就是说cmake构建的qt项目不可用qwt。 解决步…

杰发科技——使用ATCLinkTool解除读保护

0. 原因 在jlink供电电压不稳定的情况下&#xff0c;概率性出现读保护问题&#xff0c;量产时候可以通过离线烧录工具避免。代码中开了读保护&#xff0c;但是没有通过can/uart/lin/gpio控制等方式进行关闭&#xff0c;导致无法关闭读保护。杰发所有芯片都可以用本方式解除读保…