zoukankan      html  css  js  c++  java
  • Nodejs模块:path

    当前版本:v 10.16.0

    一,获取文件相关信息

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

    获取该文件的文件名,如果有扩展名,则一起显示扩展名;

    如果不想展示扩展名,只想展示文件名,那么第二个参数可选,传入具体的文件扩展名,返回文件名而不包括扩展名。

    path.basename('/foo/bar/baz/asdf/quux.html');
    // Returns: 'quux.html'
    
    path.basename('/foo/bar/baz/asdf/quux.html', '.html');
    // Returns: 'quux'

    2,path.dirname(filepath)

    获取该文件所在的目录

    path.dirname('/foo/bar/baz/asdf/quux');
    // Returns: '/foo/bar/baz/asdf'

    3,path.extname(filepath)

    获取该文件的扩展名,需要注意的是,如果传入的路径以“.”符号结束,则返回“.”,如果最后没有“.”符号,则输出空,如果以“.”符号开头,也输出空。

    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: ''

    二,将文件路径组合拼接

    1,path.join([...paths])

    把传入的path拼起来,再执行path.normalize,注意,这个返回的不是绝对路径,只是拼起来的path,然后经过了normalize的处理

    // slb文件位置在/Users/yanchenyu/github/node-soa-server/middleware/slb
    
    // 此时我们在node-soa-server下执行命令
    
    path.join('./middleware', 'slb')
    // middleware/slb
    // 不是绝对路径,只是拼起来的path
    
    path.resolve('./middleware', 'slb')
    // /Users/yanchenyu/github/node-soa-server/middleware/slb

    2,path.resolve([...paths])

    这个方法是用得最多的,一般path模块都是用这个方法,返回的是绝对路径,如果看返回值,有个很笨但是很有用的方法,就是等同于直接在shell下依次敲命令cd path,比如:

    path.resolve('/foo/bar', './baz');
    
    // 等同于
    
    cd /foo/bar
    cd ./baz
    
    // Returns: '/foo/bar/baz'
    path.resolve('/foo/bar', '/tmp/file/');
    // Returns: '/tmp/file'
    
    path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
    // if the current working directory is /home/myself/node,
    // this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'

    还有一个要注意的,path.resolve会去掉末尾的/,而path.join不会,原因就是path.normalize会保留末尾/,但两者都会去掉中间多余的/

    path.resolve('.//middleware', 'slb/')
    // /Users/yanchenyu/github/node-soa-server/middleware/slb
    
    path.join('.//middleware', 'slb/')
    // middleware/slb/

    3,path.normalize(path)

    这个就是刚刚path.join内部操作的最后一步,它主要是将一些不合理的path给规范化,比如:

    1️⃣去除重复的/

    上面给过例子了,不再说

    2️⃣path中有.或..的,按cd .或cd ..处理

    path.normalize('/middleware/./slb/.././')
    
    // /middleware/

    3️⃣末尾的/不变,有就保留没有就去掉,保持一致

    三,文件路径的拆分和聚合,按对象来处理

     1,path.parse(path)

    返回的是一个pathObject对象,有五个属性(root, dir, base, ext, name):

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

    2,path.format(pathObject)

    传入pathObject,有五个属性(可选),刚好是上面的五个

    const pathObject = { root: '/',
       dir: '/home/user/dir',
       base: 'file.txt',
       ext: '.txt',
       name: 'file' };
    
    path.format(pathObject);
    
    // /home/user/dir/file.txt

    四,路径解析

    path.relative(from, to)

    path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb');
    // Returns: '../../impl/bbb'

    总结:

    path模块主要是用来处理文件路径的相关操作,主要比较常用的还是resolve,然后包括上面提到的这几个api,还有几个不常用的可以参考官方文档。

    end

  • 相关阅读:
    排版字号对应多少pt
    C# 定义常量 两种实现方法
    HttpApplication 类,HttpApplicationState 类
    [ASP.net教程]ASP.NET保存信息总结(Application、Session、Cookie、ViewState和Cache等)
    sqlserver 汉字转拼音(转载)
    几个不错的echarts +百度地图 案例
    ECharts 实现地图散点图上(转载)
    ECharts 散点图+百度地图(案例转载)
    SQL统计部门人数,人数为0的部门也要显示出来
    待看文档
  • 原文地址:https://www.cnblogs.com/yanchenyu/p/11061653.html
Copyright © 2011-2022 走看看