广告
返回顶部
首页 > 资讯 > 前端开发 > html >Nodejs中如何使用path路径处理模块
  • 289
分享到

Nodejs中如何使用path路径处理模块

2024-04-02 19:04:59 289人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关nodejs中如何使用path路径处理模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。获取路径/文件名/扩展名获取路径:pat

这篇文章将为大家详细讲解有关nodejs中如何使用path路径处理模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

获取路径/文件名/扩展名

  • 获取路径:path.dirname(filepath)

  • 获取文件名:path.basename(filepath)

  • 获取扩展名:path.extname(filepath)

获取所在路径

例子如下:

var path = require('path'); var filepath = '/tmp/demo/js/test.js';  // 输出:/tmp/demo/js console.log( path.dirname(filepath) );

获取文件名

严格意义上来说,path.basename(filepath) 只是输出路径的***一部分,并不会判断是否文件名。

但大部分时候,我们可以用它来作为简易的“获取文件名“的方法。

var path = require('path');  // 输出:test.js console.log( path.basename('/tmp/demo/js/test.js') );  // 输出:test console.log( path.basename('/tmp/demo/js/test/') );  // 输出:test console.log( path.basename('/tmp/demo/js/test') );

如果只想获取文件名,单不包括文件扩展呢?可以用上第二个参数。

// 输出:test console.log( path.basename('/tmp/demo/js/test.js', '.js') );

获取文件扩展名

简单的例子如下:

var path = require('path'); var filepath = '/tmp/demo/js/test.js';  // 输出:.js console.log( path.extname(filepath) );

更详细的规则是如下:(假设 path.basename(filepath) === B )

  • 从B的***一个.开始截取,直到***一个字符。

  • 如果B中不存在.,或者B的***个字符就是.,那么返回空字符串

直接看官方文档的例子

path.extname('index.html') // returns '.html'  path.extname('index.coffee.md') // returns '.md'  path.extname('index.') // returns '.'  path.extname('index') // returns ''  path.extname('.index') // returns ''

路径组合

  • path.join([...paths])

  • path.resolve([...paths])

path.join([...paths])

把paths拼起来,然后再nORMalize一下。这句话反正我自己看着也是莫名其妙,可以参考下面的伪代码定义。

例子如下:

var path = require('path');  // 输出 '/foo/bar/baz/asdf' path.join('/foo', 'bar', 'baz/asdf', 'quux', '..');

path定义的伪代码如下:

module.exports.join = function(){   var paths = Array.prototye.slice.call(arguments, 0);   return this.normalize( paths.join('/') ); };

path.resolve([...paths])

这个接口的说明有点啰嗦。你可以想象现在你在shell下面,从左到右运行一遍cd  path命令,最终获取的绝对路径/文件名,就是这个接口所返回的结果了。

比如 path.resolve('/foo/bar', './baz') 可以看成下面命令的结果

cd /foo/bar cd ./baz

更多对比例子如下:

var path = require('path');  // 假设当前工作路径是 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path  // 输出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path console.log( path.resolve('') )  // 输出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path console.log( path.resolve('.') )  // 输出 /foo/bar/baz console.log( path.resolve('/foo/bar', './baz') );  // 输出 /foo/bar/baz console.log( path.resolve('/foo/bar', './baz/') );  // 输出 /tmp/file console.log( path.resolve('/foo/bar', '/tmp/file/') );  // 输出 /Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path/www/js/mod.js console.log( path.resolve('www', 'js/upload', '../mod.js') );

路径解析

path.parse(path)

path.normalize(filepath)

从官方文档的描述来看,path.normalize(filepath) 应该是比较简单的一个api,不过用起来总是觉得没底。

为什么呢?API说明过于简略了,包括如下:

  • 如果路径为空,返回.,相当于当前的工作路径。

  • 将对路径中重复的路径分隔符(比如linux下的/)合并为一个。

  • 对路径中的.、..进行处理。(类似于shell里的cd ..)

  • 如果路径***有/,那么保留该/。

感觉stackoverflow上一个兄弟对这个API的解释更实在,原文链接。

In other Words, path.normalize is "What is the shortest path I can take that  will take me to the same place as the input"

代码示例如下。建议读者把代码拷贝出来运行下,看下实际效果。

var path = require('path'); var filepath = '/tmp/demo/js/test.js';  var index = 0;  var compare = function(desc, callback){   console.log('[用例%d]:%s', ++index, desc);   callback();   console.log('\n'); };  compare('路径为空', function(){   // 输出 .   console.log( path.normalize('') ); });  compare('路径结尾是否带/', function(){   // 输出 /tmp/demo/js/upload   console.log( path.normalize('/tmp/demo/js/upload') );    // /tmp/demo/js/upload/   console.log( path.normalize('/tmp/demo/js/upload/') ); });  compare('重复的/', function(){   // 输出 /tmp/demo/js   console.log( path.normalize('/tmp/demo//js') ); });  compare('路径带..', function(){   // 输出 /tmp/demo/js   console.log( path.normalize('/tmp/demo/js/upload/..') ); });  compare('相对路径', function(){   // 输出 demo/js/upload/   console.log( path.normalize('./demo/js/upload/') );    // 输出 demo/js/upload/   console.log( path.normalize('demo/js/upload/') ); });  compare('不常用边界', function(){   // 输出 ..   console.log( path.normalize('./..') );    // 输出 ..   console.log( path.normalize('..') );    // 输出 ../   console.log( path.normalize('../') );    // 输出 /   console.log( path.normalize('/../') );      // 输出 /   console.log( path.normalize('/..') ); });

感兴趣的可以看下 path.normalize(filepath) 的node源码如下:传送门

文件路径分解/组合

  • path.format(pathObject):将pathObject的root、dir、base、name、ext属性,按照一定的规则,组合成一个文件路径。

  • path.parse(filepath):path.format()方法的反向操作。

我们先来看看官网对相关属性的说明。

首先是linux下

┌─────────────────────┬────────────┐ │          dir        │    base    │ ├──────┬              ├──────┬─────┤ │ root │              │ name │ ext │ "  /    home/user/dir / file  .txt " └──────┴──────────────┴──────┴─────┘ (all spaces in the "" line should be ignored -- they are purely for formatting)

然后是windows

┌─────────────────────┬────────────┐ │          dir        │    base    │ ├──────┬              ├──────┬─────┤ │ root │              │ name │ ext │ " C:\      path\dir   \ file  .txt " └──────┴──────────────┴──────┴─────┘ (all spaces in the "" line should be ignored -- they are purely for formatting)

path.format(pathObject)

阅读相关API文档说明后发现,path.format(pathObject)中,pathObject的配置属性是可以进一步精简的。

根据接口的描述来看,以下两者是等价的。

  • root vs dir:两者可以互相替换,区别在于,路径拼接时,root后不会自动加/,而dir会。

  • base vs name+ext:两者可以互相替换。

var path = require('path');  var p1 = path.format({   root: '/tmp/',    base: 'hello.js' }); console.log( p1 ); // 输出 /tmp/hello.js  var p2 = path.format({   dir: '/tmp',    name: 'hello',   ext: '.js' }); console.log( p2 );  // 输出 /tmp/hello.js

path.parse(filepath)

path.format(pathObject) 的反向操作,直接上官网例子。

四个属性,对于使用者是挺便利的,不过path.format(pathObject) 中也是四个配置属性,就有点容易搞混。

path.parse('/home/user/dir/file.txt') // returns // { //    root : "/", //    dir : "/home/user/dir", //    base : "file.txt", //    ext : ".txt", //    name : "file" // }

获取相对路径

接口:path.relative(from, to)

描述:从from路径,到to路径的相对路径。

边界:

  • 如果from、to指向同个路径,那么,返回空字符串。

  • 如果from、to中任一者为空,那么,返回当前工作路径。

上例子:

var path = require('path');  var p1 = path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'); console.log(p1);  // 输出 "../../impl/bbb"  var p2 = path.relative('/data/demo', '/data/demo'); console.log(p2);  // 输出 ""  var p3 = path.relative('/data/demo', ''); console.log(p3);  // 输出 "../../Users/a/Documents/git-code/nodejs-learning-guide/examples/2016.11.08-node-path"

平台相关接口/属性

以下属性、接口,都跟平台的具体实现相关。也就是说,同样的属性、接口,在不同平台上的表现不同。

  • path.posix:path相关属性、接口的linux实现。

  • path.win32:path相关属性、接口的win32实现。

  • path.sep:路径分隔符。在linux上是/,在windows上是``。

  • path.delimiter:path设置的分割符。linux上是:,windows上是;。

注意,当使用 path.win32 相关接口时,参数同样可以使用/做分隔符,但接口返回值的分割符只会是``。

直接来例子更直观。

> path.win32.join('/tmp', 'fuck') '\\tmp\\fuck' > path.win32.sep '\\' > path.win32.join('\tmp', 'demo') '\\tmp\\demo' > path.win32.join('/tmp', 'demo') '\\tmp\\demo'

path.delimiter

linux系统例子:

console.log(process.env.PATH) // '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'  process.env.PATH.split(path.delimiter) // returns ['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']

windows系统例子:

console.log(process.env.PATH) // 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'  process.env.PATH.split(path.delimiter) // returns ['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\node\\']

关于Nodejs中如何使用path路径处理模块就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Nodejs中如何使用path路径处理模块

本文链接: https://www.lsjlt.com/news/74113.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Nodejs中如何使用path路径处理模块
    这篇文章将为大家详细讲解有关Nodejs中如何使用path路径处理模块,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。获取路径/文件名/扩展名获取路径:pat...
    99+
    2022-10-19
  • Node.js中路径处理模块path详解
    前言 在node.js中,提供了一个path某块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法与属性,将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了。下面我们就来详细介绍下关于...
    99+
    2022-06-04
    详解 路径 模块
  • Node.js 中常用内置模块(path 路径模块)
    目录前言路径拼接:join方法获取文件名:basename方法获取文件扩展名:extname方法结语前言 进行服务端开发,少不了对各种路径的处理,之前我们是简单粗暴的使用字符串的方法...
    99+
    2022-11-13
  • 如何在 Python 中使用 path 模块来管理文件路径?
    当你在 Python 中需要操作文件时,了解如何管理文件路径是非常重要的。Python 的 pathlib 模块提供了一种更加面向对象的方式来管理文件路径,而且它比传统的字符串处理方式更加安全和直观。在本文中,我们将介绍如何使用 pathl...
    99+
    2023-10-09
    接口 path 日志
  • node的path路径模块怎么使用
    这篇文章主要介绍了node的path路径模块怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇node的path路径模块怎么使用文章都会有所收获,下面我们一起来看看吧。node的path模块前言:通过这篇文...
    99+
    2023-07-05
  • Node中的fs文件模块和path路径模块怎么使用
    这篇“Node中的fs文件模块和path路径模块怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node中的fs文件模...
    99+
    2023-07-04
  • 什么是Python中的path模块?如何使用它来管理文件路径?
    Python是一种高级编程语言,它拥有广泛的应用领域,例如数据分析、机器学习、网络爬虫等。在这些应用中,文件操作是非常常见的操作。Python提供了一个path模块,它可以帮助我们管理文件路径。本文将介绍path模块的基本知识和使用方法。 ...
    99+
    2023-06-05
    容器 path 异步编程
  • Python文件路径处理模块pathlib怎么使用
    这篇文章主要介绍了Python文件路径处理模块pathlib怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python文件路径处理模块pathlib怎么使用文章都会有所收获,下面我们一起来看看吧。1. ...
    99+
    2023-07-05
  • 如何在Java编程中使用路径(Path)来处理文件?
    在Java编程中,处理文件是非常常见的操作。而路径(Path)则是处理文件时最基本的概念。在本篇文章中,我们将介绍如何在Java编程中使用路径(Path)来处理文件,以及一些常见的路径操作。 一、什么是路径(Path)? 路径(Path)...
    99+
    2023-07-29
    编程算法 异步编程 path
  • 如何在Python IDE中使用Path函数来处理文件路径?
    Python 是一种广泛使用的高级编程语言,它非常适合用于数据处理、科学计算和人工智能等领域。在 Python 中,处理文件和目录的路径是一个非常常见的任务。Python 提供了许多内置的模块和函数来处理文件和目录路径,其中最常用的是 os...
    99+
    2023-07-26
    ide path 函数
  • Java编程中的Path类:如何处理文件路径?
    在Java编程中,我们经常需要操作文件和路径。对于文件操作,Java提供了File类;而对于路径操作,Java 7及以上版本提供了Path类。Path类提供了一些方便的方法来处理文件路径,本文将介绍如何使用Path类来处理文件路径。 一、...
    99+
    2023-07-29
    编程算法 异步编程 path
  • Nodejs中如何使用crypto模块
    本篇文章给大家分享的是有关Nodejs中如何使用crypto模块,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。crypto模块是nodejs的...
    99+
    2022-10-19
  • node path模块如何使用
    这篇文章主要讲解了“node path模块如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node path模块如何使用”吧!path.resolve...
    99+
    2022-10-19
  • 如何在PHP中使用Windows路径函数来处理路径?
    在PHP开发中,处理文件路径是一个非常常见的操作。但是,在Windows系统中,文件路径通常是使用反斜杠()来表示的,而在Linux系统中,则是使用正斜杠(/)来表示的。这种差异可能会导致一些问题,因此PHP提供了一些Windows路径函数...
    99+
    2023-08-10
    windows path 函数
  • 如何使用Nodejs-cluster模块
    这篇文章主要为大家展示了“如何使用Nodejs-cluster模块”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Nodejs-cluster模块”这篇文章吧。基本用法Node.js默认单...
    99+
    2023-06-22
  • Nodejs读取文件时相对路径的正确写法(使用fs模块)
    在开发Nodejs中,我们往往最常用的模块就是fs核心模块(fs.readFile)来读取文件。代码如下: 但是运行之后,并没有按照想象中一样,读取test.html文件内容,这是一个bug,坑爹的玩意,...
    99+
    2022-06-04
    写法 路径 模块
  • Node.js 中如何使用fs与Path模块
    Node.js 中如何使用fs与Path模块,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。概述:文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以...
    99+
    2023-06-20
  • 如何在Python中使用数组操作路径(path)?
    在Python中,处理文件路径是一个非常常见的任务。无论是在文件系统中读取文件,还是在网络上处理URL,操作路径(path)都是必须的。Python提供了一个标准库模块os.path,它可以让你轻松地处理路径。 在本文中,我们将介绍如何在P...
    99+
    2023-10-07
    bash 数组 path
  • NodeJs使用Mysql模块实现事务处理实例
    依赖模块: 1. mysql:https://github.com/felixge/node-mysql npm install mysql --save 2. async:https://githu...
    99+
    2022-06-04
    实例 模块 事务处理
  • PHP 中如何使用 JavaScript API 来处理路径?
    在Web开发中,路径处理是一个非常重要的问题。PHP和JavaScript都是常用的Web开发语言,它们都提供了路径处理的API。在本文中,我们将介绍如何在PHP中使用JavaScript API来处理路径。 一、什么是路径? 路径是指计...
    99+
    2023-11-10
    api javascript path
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作