Jeffery

人无远虑、必有近忧

  • 主页
  • 随笔
  • 技术
  • 相册
  • 关于
所有文章 友链 关于我

Jeffery

人无远虑、必有近忧

  • 主页
  • 随笔
  • 技术
  • 相册
  • 关于

path模块的使用

阅读数:0次 2018-05-22

文章导航

× 文章目录
  1. 1. 方法
    1. 1.0.1. 1、path.resolve([path1], [path2], …)
    2. 1.0.2. 2、path.join([path1], [path2], …)
    3. 1.0.3. 3、path.relative()
    4. 1.0.4. 4、path.isAbsolute()
    5. 1.0.5. 5、path.normalize(path)
    6. 1.0.6. 6、path.format(pathObject)
    7. 1.0.7. 7、path.parse()
    8. 1.0.8. 8、path.dirname()
    9. 1.0.9. 9、path.basename()
    10. 1.0.10. 10、path.extname()
  • 2. 属性
    1. 2.0.1. 1、path.win32和path.posix
    2. 2.0.2. 2、path.delimiter
    3. 2.0.3. 3、path.sep
  • path模块包含一系列处理和转换文件路径的工具集,通过 require(‘path’) 可用来访问这个模块。
    知识点:对window系统,目录分隔为’\’, 对于UNIX系统,分隔符为’/‘,针对’..’返回上一级,发现多个斜杠或反斜杠时会替换成一个,/,//,\与\都被统一转换为\

    方法

    1、path.resolve([path1], [path2], …)

      按照顺序依次拼接,获取的是绝对路径,路径末尾的不会带有路径分隔符,若合并后的路径没有构成一个绝对路径,则会默认使用当前工作目录的绝对路径。

    1
    2
    3
    4
    5
    6
    // 拼接路径中没有带有绝对路径
    var _path = path.resolve('path3', 'path4', 'a/b\\cc\\'); // 没有末尾的路径分隔符\
    // 结果为:D:\others\node\examples\path3\path4\a\b\cc
    // 拼接路径中带有绝对路径
    var _path = path.resolve('D://work/ready/demo', 'path3', 'path4', 'a/b\\cc\\');
    // 结果为:D:\work\ready\demo\path3\path4\a\b\cc

    注意: 其中的D:\others\node\examples\为我的工作路径,请对应替换自己的路径查看

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

      按照顺序,依次拼接路径、并转为normalize后的结果路径,路径末尾的带有路径分隔符。

    1
    2
    var _path = path.join('path1', 'path2\\p/cc//', '/c/../ttt\\');
    // 结果为:path1\path2\p\cc\ttt\

    3、path.relative()

      获取相对路径,获取两个路径之间的相对关系。

    • from 当前路径,并且方法返回值是基于from指定到to的相对路径,路径末尾的不带有路径分隔符
    • to 到哪路径
      1
      2
      3
      4
      var from = 'D:\\work\\server\\',
      to = 'D:/work/ready/demo';
      var _path = path.relative(from, to); // 表示从from 到 to的相对路径
      // 结果为:..\ready\demo
    4、path.isAbsolute()

      获取绝对路径,是一个绝对路径(比如 ‘E:/abc’或’E:\‘),或者是以“/”或“\”开头的路径,二者都会返回true。

    1
    2
    3
    4
    5
    6
    console.log(path.isAbsolute('D:\\work\\server\\')); // true
    console.log(path.isAbsolute('\\work\\server')) // true
    console.log(path.isAbsolute('/temp/../..')); // true
    console.log(path.isAbsolute('E:/github/nodeAPI/abc/efg')); // true
    console.log(path.isAbsolute('///temp123')); // true
    console.log(path.isAbsolute('//temp123')); // true

    5、path.normalize(path)

      路径解析、得到规范化的格式。

    1
    2
    var _path = path.normalize(__dirname + '//test/a//b/..//c\\');
    // 结果为:D:\others\node\examples\test\a\c\

    6、path.format(pathObject)

      该方法用于将一个字符串类型的路径转化为一个路径对象(pathObject)。该路径对象当中包括文件目录,文件名,扩展名等。

    1
    2
    3
    4
    5
    6
    7
    8
    var _path = path.format(path.format({ root: 'E:\\',
    dir: 'D:\\others\\node\\examples/test',
    base: 'util you.mp4',
    ext: '.mp4',
    name: 'util you as me'
    }
    ));
    // 结果为:D:\others\node\examples/test\util you.mp4

    7、path.parse()

      该方法用于将一个路径对象转化为一个字符串类型的路径(pathString)。

    1
    2
    3
    4
    5
    6
    7
    8
    var _path = path.parse(__dirname + '/test/util you.mp3');
    // 结果为:
    // { root: 'D:\\',
    // dir: 'D:\\others\\node\\examples/test',
    // base: 'util you.mp3',
    // ext: '.mp3',
    // name: 'util you'
    // }

    8、path.dirname()

      获取路径中目录结构,不会转为normalize后的结果路径。

    1
    2
    3
    4
    var _path = path.dirname(__dirname + '/test/hha/util you.mp3'); // 注意/
    // 结果为:D:\others\node\examples/test/hha
    var _path = path.dirname(__dirname + '/test/hha/'); // 注意/
    // 结果为:D:\others\node\examples/test

    9、path.basename()

      获取路径中文件名(.ext则包括后缀名)。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var _path = path.basename(__dirname + '/test/util you.mp3', '.mp3');
    var _path = path.basename(__dirname + '/test/util you', '.mp3');
    var _path = path.basename(__dirname + '/test/util you', '.ext');
    // 结果为:util you
    var _path = path.basename(__dirname + '/test/util you.mp3');
    var _path = path.basename(__dirname + '/test/util you.mp3', '');
    var _path = path.basename(__dirname + '/test/util you.mp3', '.ext');
    // 结果为:util you.mp3
    var _path = path.basename(__dirname + '/test/', '.mp3');
    // 结果为:test

    10、path.extname()

      获取路径中文件后缀名。

    1
    2
    3
    4
    var _path = path.extname(__dirname + '/test/util you.mp3');
    // 结果为:.mp3
    var _path = path.extname(__dirname + '/test/util you');
    // 结果为:为空

    属性

    1、path.win32和path.posix

      这两个均为属性。
      path:会根据当前操作系统来确定是使用windows的方式来操作路径,还是使用linux的方式来操作路径。
      path.win32:允许在任意操作系统上使用windows的方式来操作路径。
      path.posix:允许在任意操作系统上使用linux的方式来操作路径。
      故在windows系统中,path==path.win32,而在linux系统当中,path==path.posix。

    1
    2
    console.log(path == path.win32); // true
    console.log(path == path.posix); // false

    2、path.delimiter

      返回操作系统中目录分隔符,如window是’;’, Unix中是’:’。

    1
    2
    console.log(path.delimiter);
    // 结果为:;

    3、path.sep

      返回操作系统中文件分隔符; window是’\‘, Unix是’/‘。

    1
    2
    3
    4
    5
    6
    console.log(path.sep);
    // 结果为:\
    console.log('foo\\bar\\baz'.split(path.sep));
    // [ 'foo', 'bar', 'baz' ]
    console.log('foo/bar/baz'.split(path.sep));
    // win下返回['foo/bar/baz'],但在*nix系统下会返回['foo','bar','baz']

    参见官方文档

    赏

    谢谢你请我吃糖果

    • nodejs
    • path

    扫一扫,分享到微信

    微信分享二维码
    readline模块的使用
    记录·苏州之行
    1. 1. 方法
      1. 1.0.1. 1、path.resolve([path1], [path2], …)
      2. 1.0.2. 2、path.join([path1], [path2], …)
      3. 1.0.3. 3、path.relative()
      4. 1.0.4. 4、path.isAbsolute()
      5. 1.0.5. 5、path.normalize(path)
      6. 1.0.6. 6、path.format(pathObject)
      7. 1.0.7. 7、path.parse()
      8. 1.0.8. 8、path.dirname()
      9. 1.0.9. 9、path.basename()
      10. 1.0.10. 10、path.extname()
  • 2. 属性
    1. 2.0.1. 1、path.win32和path.posix
    2. 2.0.2. 2、path.delimiter
    3. 2.0.3. 3、path.sep
  • © 2019 Jeffery
    Hexo Theme Yilia by Litten
    • 所有文章
    • 友链
    • 关于我

    tag:

    • cli
    • javascript
    • nodejs
    • design
    • 设计模式
    • readline
    • vue
    • path
    • template
    • AST
    • 源码
    • 插件
    • 轮播
    • 滚动
    • welcome
    • intoduction
    • web
    • web安全
    • vnode
    • patch
    • diff
    • 正则表达式
    • 量词
    • 贪婪模式
    • 惰性模式
    • 苏州
    • 旅行
    • 风景
    • segmentfault
    很惭愧<br><br>只做了一点微小的工作<br>谢谢大家