• NodeJS之path模块


    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
  • 相关阅读:
    Ubuntu 永久修改DNS
    三大主流MQ的组织结构
    nginx基本配置
    CentOS7安装RabbitMQ
    单个表上亿行数据的主键、索引设计,及分页查询
    [SQL]行列转换
    《团队协作的五大障碍》读后感
    【2021-09-26】面对困难是未来绝不后悔的事情
    【2021-09-25】摇摆不定反逼自己脚踏实地
    【一句日历】2021年10月
  • 原文地址:https://www.cnblogs.com/tugenhua0707/p/9065244.html
Copyright © 2020-2023  润新知