NodeJS之path模块

常用的主要有如下工具函数:

1. path.basename(path[, ext])

2. path.extname(path)

3. path.dirname(path)

4. path.parse(path)

5. path.format(pathObject)

6. path.isAbsolute(path);

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

8. path.relative(from, to)

9. path.resolve([from...], to);

一:path.basename(path[, ext])

参数解析如下:
path: <string>
ext: <string> 可选的文件扩展名
返回:<string>

path.basename(filepath), 是获取路径的最后一部分。 可以看看如下代码:

const path = require('path');

console.log(path.basename("/node/base/path/xx/js/index.js"));

// 最后输出 index.js

console.log(path.basename("/node/base/path/xx/js")); // 输出js

console.log(path.basename("/node/base/path/xx/js/")); // js/ 带反斜杠,也一样输出js

1.1 获取文件名

如果只想获取文件名,不需要扩展名则可以使用第二个参数,第二个参数可以指定文件的扩展名;如下代码:

const path = require('path');

console.log(path.basename("/node/base/path/xx/js/index.js", '.js'));

// 最后输出 index

二:path.extname(path)

该方法返回path的扩展名,即从path的最后一部分中的最后一个.(句号)字符到字符串结束。如果path的最后一部分没有 . 或 path的文件名的第一个
字符是 . ,则返回一个空字符串。如下代码:

const path = require('path');

console.log(path.extname('index.html')); // .html

console.log(path.extname('index.coffee.md')); // .md

console.log(path.extname('index.')); // 返回 .

console.log(path.extname('index')); // 返回 ''

console.log(path.extname('.index')); // 返回 ''

如果path不是一个字符串,则抛出 TypeError; 如下:
console.log(path.extname(111)); // 抛出异常

三:path.dirname(path)

该方法返回一个path的目录名。如下代码:

const path = require('path');

const filepath = '/node/base/path/index.js';

console.log(path.dirname(filepath)); // 输出 /node/base/path

四:path.parse(path)
path.parse()方法返回一个对象,对象的属性表示path的元素。如下代码:

const path = require('path');
const filepath = '/node/base/path/index.js';
console.log(path.parse(filepath));
// 输出如下:
/*
{
root: '/',
dir: '/node/base/path',
base: 'index.js',
ext: '.js',
name: 'index'
}
*/

五:path.format(pathObject)
该方法会从一个对象返回一个路径字符串,与pase.parse()相反。

当pathObject提供的属性有组合时,有些属性的优先级比其他的高;

1. 如果提供了pathObject.dir,则pathObject.root 会被忽略。
2. 如果提供了 pathObject.base存在,则pathObject.ext 和 pathObject.name 会被忽略;

如下代码:

const path = require('path');

// 如果提供了pathObject.dir,则pathObject.root 会被忽略。
const str = {
root: '/ignored',
dir: '/node/base/path',
base: 'index.js',
ext: '.js',
name: 'index'
}; console.log(path.format(str)); // 输出 /node/base/path/index.js // 如果没有提供了pathObject.dir,则pathObject.root 会使用。
const str2 = {
root: '/',
base: 'index.js',
ext: '.js',
name: 'index'
}; console.log(path.format(str2)); // 输出 /index.js // 如果没有指定 'base', 则 'name' + 'ext' 会被使用 const str3 = {
root: '/',
ext: '.js',
name: 'index'
}; console.log(path.format(str3)); // 输出 /index.js

六:path.isAbsolute(path);

该方法会判定path是否为一个绝对路径。如果给定的path是一个长度为零的字符串,则返回false. 如下代码:

const path = require('path');

console.log(path.isAbsolute('/xxx/yy')); // true
console.log(path.isAbsolute('/xxx/')); // true
console.log(path.isAbsolute('xxxx/')); // false
console.log(path.isAbsolute('.')); // false

七:path.join([...paths])
该方法使用特定的分隔符把全部给定的path片段链接到一起,并规范生成的路径。

如下代码:

const path = require('path');

console.log(path.join('/node', 'www', 'local', 'html', ''));
// 输出 /node/www/local/html console.log(path.join('node', 11122, 'www'));
// 会报错,TypeError: Path must be a string. Received 11122

八:path.relative(from, to)
该方法返回从 from 到 to的相对路径(基于当前工作目录)。
如下代码:

const path = require('path');

console.log(path.relative('/data/xx/text/aa', '/data/xx/yyyy/bbb'));

// 输出  ../../yyyy/bbb

九:path.resolve([from...], to);

将to分解成一个绝对路径。
如果to不是一个绝对路径的话,那么from会被优先考虑,直到找到一个绝对路径,如果在form内还没有找到绝对路径,就会使用当前的工作目录。
当然如果 to 是一个绝对路径的话,那么直接返回该绝对路径。

如下代码:

const path = require('path');

// to 不是一个绝对路径,form优先被考虑,直到找到一个绝对路径
console.log(path.resolve('/foo/bar', './baz')); // 返回 /foo/bar/baz // to 是一个绝对路径,那么久直接返回 to
console.log(path.resolve('/foo/bar', '/baz')); // 返回 /baz // 如果 from 和 to 都不是一个绝对路径的话,就会使用当前的工作目录 + form + to
console.log(path.resolve('foo', 'bar')); // 返回 /Users/tugenhua/个人demo/node0420/nodeUrl/foo/bar

NodeJS之path模块的更多相关文章

  1. NodeJS 笔记 path模块

    path 模块,本模块包含一系列处理和转换文件路径的工具集. path.normalize(path)   normalize函数将不符合规范的路径经过格式化转换为标准路径,解析路径中的.与..外,还 ...

  2. NodeJS中 Path 模块

    var path = require('path'); // 当发现有多个连续的斜杠时,会替换成一个: 当路径末尾包含斜杠时,会保留: // 在 Windows 系统会使用反斜杠. var p = p ...

  3. 介绍nodejs中的path模块的几个方法

    webpack中常用的: var path = require('path') 是nodejs中的path模块,介绍一下webpack中常用的几个path模块的方法: 应用node环境的时候,这个pa ...

  4. node path模块

    一.在nodejs中path模块时使用频率很高的模块,其中不乏有很多API写得很模糊,但仔细琢磨下来,也不是很难理解. 1.获取文件所在路径 var path = require('path'); v ...

  5. nodejs 5.2.0文档自翻译——Path模块

    模块方法概览 Path path.basename(p[, ext]) path.delimiter path.dirname(p) path.extname(p) path.format(pathO ...

  6. nodeJS之路径PATH模块

    前面的话 path模块包含一系列处理和转换文件路径的工具集,通过 require('path') 可用来访问这个模块.本文将详细介绍path模块 路径组成 [path.dirname(p)] 返回路径 ...

  7. nodejs入门API之path模块

    Path模块在各个系统上的差异 Path模块API解析 一.Path模块在各个系统上的差异 path模块提供用于处理文件路径和目录路径的使用工具. let path = require('path') ...

  8. NodeJs之Path

    Path模块 NodeJs提供的Path模块,使得我们可以对文件路径进行简单的操作. API var path = require('path'); var path_str = '\\Users\\ ...

  9. node之path模块

    node之path模块 原文链接 //引用该模块 var path = require("path"); 1.路径解析,得到规范化的路径格式 对window系统,目录分隔为'', ...

随机推荐

  1. MyBatis学习笔记(三) Configuration类

    一.初探Configuration类 我们先来看一下MyBatis的XML配置文件的结构,(摘自mybatis.org) 下面这个是Configuration类的部分变量 一点不一样是不是??? 其实 ...

  2. fast-spring-boot快速开发项目

    Introduction fast-spring-boot 集成Spring Boot 2.1,Mybatis,Mybatis Plus,Druid,FastJson,Redis,Rabbit MQ, ...

  3. 基于Zookeeper的分布式锁

    实现分布式锁目前有三种流行方案,分别为基于数据库.Redis.Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开.我们来看下使用Zookeeper如何实现分布式锁. 什么是 ...

  4. UdPloyer交付系统设计思路

    宏观愿景: 一键搞定项目依赖环境,将软件交付过程管理化,实现DevOps研发测试运维一体化. 一.一站式版本交付生命周期管理  业务线[私有权限] 1.SVN源码交付 合主干.版本归档.拉分支.版本回 ...

  5. 大型Vuex应用程序的目录结构

    译者按: 听前端大佬聊聊Vuex大型项目架构的经验 原文: Large-scale Vuex application structures 译者: Fundebug 为了保证可读性,本文采用意译而非直 ...

  6. 【作业一】Android开发环境以及开发前的准备

    对于Android平台的开发工具,我知道的就是Eclipse和Android Studio(后面简称AS).之前在学习JAVA时,渐渐习惯了Eclipse,后来要搭建Android的开发环境时,本来也 ...

  7. Django框架理解和使用常见问题

    1.什么是中间件? 中间件是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出. 中间件一般做认证或批量请求处理,django中的中间 ...

  8. python之while循环/格式化输出/运算符/初始编码/成员变量

    一.主要内容:1.while 循环 (难点)while 条件: 循环体 break: 直接跳出循环continue:停止当前本次循环,继续执行下一次循环.不会中断循环能让循环退出:(1)break ( ...

  9. vue-cli脚手架之webpack.base.conf.js

    webpack相关的重要配置文件将在这一节给出.webpack水很深啊^o^,在此先弄清楚原配文件内容的含义,后续可以自己根据实际情况配置. webpack.base.conf.js:配置vue开发环 ...

  10. Android View体系(一)视图坐标系

    前言 Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系.View的滑动.View的事件分发等文章来逐步介绍Android V ...