Node.Js Path模块

来源:互联网 发布:windows无法检索有关 编辑:程序博客网 时间:2024/06/04 19:19

require('path')模块

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

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

1.path.parse(pathString);

将路径字符串转换成对象

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.parse(pathString);  
  3. //将路径字符串转换成对象  
  4. //传入的路径当文件路径处理,name返回的是文件名或最后文件夹名  
  5. var obj1=path.parse('/home/user/dir/file.txt');  
  6. console.info(obj1);  
  7. { root: '/',   //根目录  
  8.   dir: '/home/user/dir'//文件所在目录  
  9.   base: 'file.txt',  //文件名  
  10.   ext: '.txt'//文件扩展名  
  11.   name: 'file' //文件名称,不含扩展名  
  12. }  
  13. var obj2=path.parse('C:\\path\\dir\\index.html');  
  14. console.info(obj2);  
  15. { root: 'C:\\',  
  16.   dir: 'C:\\path\\dir',  
  17.   base: 'index.html',  
  18.   ext: '.html',  
  19.   name: 'index'   
  20. }  
  21. var ojb3=path.parse('C:\\path\\dir\\');  
  22. console.info(ojb3);  
  23. { root: 'C:\\',  
  24.   dir: 'C:\\path',  
  25.   base: 'dir',  
  26.   ext: '',  
  27.   name: 'dir'   
  28. }  

2.path.format(pathObject)

将object对象序列化成字符串

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.format(pathObject)  
  3. //将object对象序列化成字符串  
  4. // 结果证明 转换的时候,重点指定 目录dir 和 base文件名  
  5. var url1=path.format({  
  6.     dir:'/home/user/dir',  
  7.     base:'file.txt'  
  8. });  
  9. var url2=path.format({  
  10.     root:'f:\\',  
  11.     base:'file.txt'  
  12. });  
  13. var url3=path.format({  
  14.     root:'f:',  
  15.     dir:'f:\\dir1\\dir2',  
  16.     name:'file',  
  17.     ext:'.txt'  
  18. });  
  19. var url4=path.format({  
  20.     base:'file.txt'  
  21. });  
  22. var url5=path.format({  
  23.     root:'f:',  
  24.     dir:'f:\\dir1\\dir2',  
  25.     base:'file.txt'  
  26. });  
  27. console.log('url1:',url1); // /home/user/dir\file.txt  
  28. console.log('url2:',url2); // file.txt  
  29. console.log('url3:',url3); // f:\dir1\dir2\  
  30. console.log('url4:',url4); // file.txt  
  31. console.log('url5:',url5); // f:\dir1\dir2\file.txt  

二、跨平台标准化

1.path.normalize(p) 

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

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.normalize(p) 标准化路径字符串,处理冗余的“ .. ”、“ . ”、“ / ”字符  
  3. //如果在win下,返回 dir1\dir2格式  
  4. //如果在unix下,返回 dir1/dir2格式  
  5. var url1 = path.normalize('a/b/c/../user/vajoy/bin');  
  6. var url2 = path.normalize('a/b/c///../user/vajoy/bin/');  
  7. var url3 = path.normalize('./a/.././user/vajoy/bin/./');  
  8. console.info(url1);  
  9. console.info(url2);  
  10. console.info(url3);  

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

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

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

3.path.sep

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

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.sep  
  3. //返回对应平台下的文件夹分隔符,win下为'\',*nix下为'/'  
  4. var url1 = path.sep;  
  5. var url2 = 'foo\\bar\\baz'.split(path.sep);  
  6. var url3 = 'foo/bar/baz'.split(path.sep);  
  7.   
  8. console.log('url1:',url1);  // win下为\,*nix下为/  
  9. console.log('url2:',url2);  // [ 'foo', 'bar', 'baz' ]  
  10. console.log('url3:',url3);  // win下返回[ 'foo/bar/baz' ],但在*nix系统下会返回[ 'foo', 'bar', 'baz' ]  

4.path.delimiter

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

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

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

1.path.isAbsolute(path) 

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

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.isAbsolute(path)   
  3. //判断是否是绝对路径  
  4. //比如 'E:/abc',或者是以“/”开头的路径,二者都会返回true  
  5. var url1 = path.isAbsolute('../testFiles/secLayer');  
  6. var url2 = path.isAbsolute('./join.js');  
  7. var url3 = path.isAbsolute('temp');  
  8. var url4 = path.isAbsolute('/temp/../..');  
  9. var url5 = path.isAbsolute('E:/github/nodeAPI/abc/efg');  
  10. var url6 = path.isAbsolute('///temp123');  
  11.   
  12. console.log('url1:',url1);  // false  
  13. console.log('url2:',url2);  // false  
  14. console.log('url3:',url3);  // false  
  15. console.log('url4:',url4);  // true  
  16. console.log('url5:',url5);  // true  
  17. console.log('url6:',url6);  // true  

2.path.relative(from,to)

获取从 from 到 to 的相对路径

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.relative(from,to)  
  3. //获取从 from 到 to 的相对路径  
  4. //如果跨越磁盘符,则直接返回to的字符串  
  5. var path = require('path');  
  6.   
  7. var url1 = path.relative('C:\\vajoy\\test\\aaa''C:\\vajoy\\impl\\bbb');  
  8. var url2 = path.relative('C:/vajoy/test/aaa''C:/vajoy/bbb');  
  9. var url3 = path.relative('C:/vajoy/test/aaa''D:/vajoy/bbb');  
  10.   
  11. console.log('url1:',url1);  //..\..\impl\bbb  
  12. console.log('url2:',url2);  //url2: ..\..\bbb  
  13. console.log('url3:',url3);  //D:\vajoy\bbb  

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

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

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

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

1.path.dirname(p)

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

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.dirname(p)  
  3. //返回指定uri字符串中文件夹的路径  
  4. //如果当前为目录,则返回上一级目录  
  5. //对于Url格式的指定解析无效  
  6. var url1 = path.dirname('/foo/bar/baz/asdf/a.txt');  
  7. var url2 = path.dirname('/foo/bar/baz/asdf/');  
  8. var url3 = path.dirname('C:/vajoy/test/aaa');  
  9. var url4=path.dirname('http://www.gongjuji.net/byte');  
  10.   
  11. console.log('url1:',url1);  // /foo/bar/baz/asdf  
  12. console.log('url2:',url2);  // /foo/bar/baz  
  13. console.log('url3:',url3);  // C:/vajoy/test  
  14. console.log('url4:',url4);  // http://www.gongjuji.net  

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

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

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.basename(p,[ext])  
  3. // 返回路径中的最后一部分,类似于Unix 的 basename 命令。  
  4. //  ext 为需要截掉的尾缀内容  
  5. //  如果指定文件路径,返回文件名  
  6. //  如果指定目录。返回最内层文件夹名  
  7. var url1 = path.basename('/foo/bar/baz/asdf/a.txt');  
  8. var url2 = path.basename('/foo/bar/baz/asdf/a.txt','.txt');  
  9. var url3 = path.basename('/foo/bar/baz/asdf/');  
  10. var url4 = path.basename('C:/vajoy/test/aaa');  
  11.   
  12. console.log('url1:',url1);  // a.txt  
  13. console.log('url2:',url2);  // a  
  14. console.log('url3:',url3);  // asdf  
  15. console.log('url4:',url4);  // aaa  

3.path.extname(p)

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

[javascript] view plain copy
  1. var path=require('path');  
  2. //path.extname(p)  
  3. //返回路径文件的扩展名(若存在)  
  4. var url1 = path.extname('/foo/bar/baz/asdf/a.txt');  
  5. var url2 = path.extname('/foo/bar/baz/asdf/a.txt.html');  
  6. var url3 = path.extname('/foo/bar/baz/asdf/a.');  
  7. var url4 = path.extname('C:/vajoy/test/.');  
  8. var url5 = path.extname('C:/vajoy/test/a');  
  9.   
  10. console.log('url1:',url1);  // .txt  
  11. console.log('url2:',url2);  // .html  
  12. console.log('url3:',url3);  // .  
  13. console.log('url4:',url4);  //  
  14. console.log('url5:',url5);  //