博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.Js Path模块-文件或文件夹路径字符串操作
阅读量:4289 次
发布时间:2019-05-27

本文共 6488 字,大约阅读时间需要 21 分钟。

require('path')模块

该模块包含用于处理和转换文件路径的实用程序。几乎所有这些方法只执行字符串转换。没有协商文件系统以检查路径是否有效。

一、路径格式化、反格式化

1.path.parse(pathString);

将路径字符串转换成对象

var path=require('path');//path.parse(pathString);//将路径字符串转换成对象//传入的路径当文件路径处理,name返回的是文件名或最后文件夹名var obj1=path.parse('/home/user/dir/file.txt');console.info(obj1);{ root: '/',   //根目录  dir: '/home/user/dir', //文件所在目录  base: 'file.txt',  //文件名  ext: '.txt', //文件扩展名  name: 'file' //文件名称,不含扩展名}var obj2=path.parse('C:\\path\\dir\\index.html');console.info(obj2);{ root: 'C:\\',  dir: 'C:\\path\\dir',  base: 'index.html',  ext: '.html',  name: 'index' }var ojb3=path.parse('C:\\path\\dir\\');console.info(ojb3);{ root: 'C:\\',  dir: 'C:\\path',  base: 'dir',  ext: '',  name: 'dir' }

2.path.format(pathObject)

将object对象序列化成字符串

var path=require('path');//path.format(pathObject)//将object对象序列化成字符串// 结果证明 转换的时候,重点指定 目录dir 和 base文件名var url1=path.format({	dir:'/home/user/dir',	base:'file.txt'});var url2=path.format({	root:'f:\\',	base:'file.txt'});var url3=path.format({	root:'f:',	dir:'f:\\dir1\\dir2',	name:'file',	ext:'.txt'});var url4=path.format({	base:'file.txt'});var url5=path.format({	root:'f:',	dir:'f:\\dir1\\dir2',	base:'file.txt'});console.log('url1:',url1); // /home/user/dir\file.txtconsole.log('url2:',url2); // file.txtconsole.log('url3:',url3); // f:\dir1\dir2\console.log('url4:',url4); // file.txtconsole.log('url5:',url5); // f:\dir1\dir2\file.txt

二、跨平台标准化

1.path.normalize(p) 

标准化路径字符串,处理冗余的“ .. ”、“ . ”、“ / ”字符

var path=require('path');//path.normalize(p) 标准化路径字符串,处理冗余的“ .. ”、“ . ”、“ / ”字符//如果在win下,返回 dir1\dir2格式//如果在unix下,返回 dir1/dir2格式var url1 = path.normalize('a/b/c/../user/vajoy/bin');var url2 = path.normalize('a/b/c///../user/vajoy/bin/');var url3 = path.normalize('./a/.././user/vajoy/bin/./');console.info(url1);console.info(url2);console.info(url3);

2. path.join([path1], [path2], [...])

将多个路径结合在一起,并转换为标准化的路径

var path=require('path');//path.join([path1], [path2], [...])//将多个路径结合在一起,并转换为标准化的路径//数组想中有 /或\ 才是有效目录项//返回结果 已经进行了标准化处理 (path.normalize)var url1 = path.join('./a', 'bc', 'user/', 'vajoy', '..');var url2 = path.join('a', '../../', 'user/', 'vajoy', '..');var url4=path.join('c:\\one','\\abc\\','/dir/file.txt');//var url3 = path.join('a', '../../', {}, 'vajoy', '..');console.log('url1:',url1);  // \a\b\c\userconsole.log('url2:',url2);  // ..\userconsole.log('url4:',url4);  //   c:\one\abc\dir\file.txt//console.log('url3:',url3);  // 存在非路径字符串,故抛出异常

3.path.sep

返回对应平台下的文件夹分隔符,win下为'\',*nix下为'/'

var path=require('path');//path.sep//返回对应平台下的文件夹分隔符,win下为'\',*nix下为'/'var url1 = path.sep;var url2 = 'foo\\bar\\baz'.split(path.sep);var url3 = 'foo/bar/baz'.split(path.sep);console.log('url1:',url1);  // win下为\,*nix下为/console.log('url2:',url2);  // [ 'foo', 'bar', 'baz' ]console.log('url3:',url3);  // win下返回[ 'foo/bar/baz' ],但在*nix系统下会返回[ 'foo', 'bar', 'baz' ]

4.path.delimiter

返回对应平台下的路径分隔符,win下为';',*nix下为':'

var path=require('path');//path.delimiter//返回对应平台下的路径分隔符,win下为';',*nix下为':'var env = process.env.PATH; //当前系统的环境变量PATHvar url1 = env.split(path.delimiter);console.log('路径分隔符:',path.delimiter); //win下为“;”,*nix下为“:”console.log('env:',env);  // C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;console.log('url1:',url1);  // ['C:\ProgramData\Oracle\Java\javapath','C:\Program Files (x86)\Intel\iCLS Client\']

三、绝对路径、相对路径处理

1.path.isAbsolute(path) 

判断是否是绝对路径,比如 'E:/abc',或者是以“/”开头的路径,二者都会返回true

var path=require('path');//path.isAbsolute(path) //判断是否是绝对路径//比如 'E:/abc',或者是以“/”开头的路径,二者都会返回truevar url1 = path.isAbsolute('../testFiles/secLayer');var url2 = path.isAbsolute('./join.js');var url3 = path.isAbsolute('temp');var url4 = path.isAbsolute('/temp/../..');var url5 = path.isAbsolute('E:/github/nodeAPI/abc/efg');var url6 = path.isAbsolute('///temp123');console.log('url1:',url1);  // falseconsole.log('url2:',url2);  // falseconsole.log('url3:',url3);  // falseconsole.log('url4:',url4);  // trueconsole.log('url5:',url5);  // trueconsole.log('url6:',url6);  // true

2.path.relative(from,to)

获取从 from 到 to 的相对路径

var path=require('path');//path.relative(from,to)//获取从 from 到 to 的相对路径//如果跨越磁盘符,则直接返回to的字符串var path = require('path');var url1 = path.relative('C:\\vajoy\\test\\aaa', 'C:\\vajoy\\impl\\bbb');var url2 = path.relative('C:/vajoy/test/aaa', 'C:/vajoy/bbb');var url3 = path.relative('C:/vajoy/test/aaa', 'D:/vajoy/bbb');console.log('url1:',url1);  //..\..\impl\bbbconsole.log('url2:',url2);  //url2: ..\..\bbbconsole.log('url3:',url3);  //D:\vajoy\bbb

3.path.resolve([from ...], to)

从源地址 from 到目的地址 to 的绝对路径。既是使用cd命令的最后的绝对目录

var path=require('path');//path.resolve([from ...], to)//从源地址 from 到目的地址 to 的绝对路径。//从当前执行js文件的目录算起,计算相对路径的绝对路径//如果指定内容跨越磁盘符,返回cd最后打开的绝对路径var url1 = path.resolve('.', 'testFiles/..', 'trdLayer');var url2=path.resolve('../../');var url3=path.resolve('../','e:\\mywork','f:\\test1');console.info(url1);console.info(url2);console.info(url3);

四、目录,文件夹、文件名获取

1.path.dirname(p)

返回指定uri字符串中文件夹的路径,如果当前为目录,则返回上一级目录

var path=require('path');//path.dirname(p)//返回指定uri字符串中文件夹的路径//如果当前为目录,则返回上一级目录//对于Url格式的指定解析无效var url1 = path.dirname('/foo/bar/baz/asdf/a.txt');var url2 = path.dirname('/foo/bar/baz/asdf/');var url3 = path.dirname('C:/vajoy/test/aaa');var url4=path.dirname('http://www.gongjuji.net/byte');console.log('url1:',url1);  // /foo/bar/baz/asdfconsole.log('url2:',url2);  // /foo/bar/bazconsole.log('url3:',url3);  // C:/vajoy/testconsole.log('url4:',url4);  // http://www.gongjuji.net

2.path.basename(p,[ext])

返回路径中的最后一部分,类似于Unix 的 basename 命令。 ext 为需要截掉的尾缀内容

var path=require('path');//path.basename(p,[ext])// 返回路径中的最后一部分,类似于Unix 的 basename 命令。//  ext 为需要截掉的尾缀内容//  如果指定文件路径,返回文件名//  如果指定目录。返回最内层文件夹名var url1 = path.basename('/foo/bar/baz/asdf/a.txt');var url2 = path.basename('/foo/bar/baz/asdf/a.txt','.txt');var url3 = path.basename('/foo/bar/baz/asdf/');var url4 = path.basename('C:/vajoy/test/aaa');console.log('url1:',url1);  // a.txtconsole.log('url2:',url2);  // aconsole.log('url3:',url3);  // asdfconsole.log('url4:',url4);  // aaa

3.path.extname(p)

返回路径文件的扩展名(若存在)

var path=require('path');//path.extname(p)//返回路径文件的扩展名(若存在)var url1 = path.extname('/foo/bar/baz/asdf/a.txt');var url2 = path.extname('/foo/bar/baz/asdf/a.txt.html');var url3 = path.extname('/foo/bar/baz/asdf/a.');var url4 = path.extname('C:/vajoy/test/.');var url5 = path.extname('C:/vajoy/test/a');console.log('url1:',url1);  // .txtconsole.log('url2:',url2);  // .htmlconsole.log('url3:',url3);  // .console.log('url4:',url4);  //console.log('url5:',url5);  //

官网API:

转载地址:http://guogi.baihongyu.com/

你可能感兴趣的文章
android的recovery,fastboot和bootloader
查看>>
android动画加速器(插值器)interpolator和速度曲线
查看>>
task ':app:prepareDebugAndroidTestDependencies'+'multidex1.0.2'
查看>>
又是离职后的清闲几天
查看>>
HttpURLConnection的实现(原理基本层)
查看>>
okHttp的网络实现(源码原理)
查看>>
Android滑动浮层(滑动布局中使其中子布局一个浮动)
查看>>
反爬虫
查看>>
高版本Android6.0抓包无效_添加系统级用户证书无作用
查看>>
英文情诗(情话)
查看>>
开发中产品的各版本定义(beta,alpha,rc,release...)
查看>>
Stripe文档(部分翻译)
查看>>
Android9.0(androidP)系统API和行为变化
查看>>
Android(9.0) P features功能,特性
查看>>
KCP协议
查看>>
迟到的总结图文-Hunter司务长
查看>>
走进数据结构 - 树(Tree)的世界
查看>>
git-命令行-本地分支,远程分支删除,分支,tag创建
查看>>
Jenkins连接python脚本打包(包含更换网络环境,发邮件)
查看>>
Let's encrypt免费证书申请流程-(简要全能版本,包含windows下操作)
查看>>