path 文件路径处理

我们知道Windows和Linux操作系统的文件路径格式有很多不同,比如:Windows使用反斜杠\而Linux使用正斜杠/,Windows有cde等盘符而Linux文件系统只有一个根节点/。Node.js提供了核心模块path实现文件路径的拼接等操作,该模块内部处理了不同操作系统之间的差异,此外它也可以用于HTTP的URL等路径的拼接。

路径拼接

path.join()方法能够实现路径拼接,并自动针对操作系统平台进行对应的转换。

const path = require('path');

const filepath = path.join(__dirname, "a.txt");
console.log(filepath);

上面例子代码中,__dirname是一个表示当前目录的变量,这里我们使用path.join()对两个字符串进行拼接,Windows下会输出例如E:\workspace-me\demonode\a.txt的字符串;如果使用Linux等操作系统则会转换成对应平台规范的文件路径。

这里第二个参数如果输入/a.txt等形式,path.join()也是可以正确处理的,它对于这种边缘情况有着良好的支持。

上面path模块对于路径拼接模式是自动识别的,我们也可以手动指定拼接的模式。

const path = require('path');

const filepath = path.posix.join('/etc', 'nginx', 'site-available');
console.log(filepath);

上面代码我们指定了posix拼接模式,因此无论使用什么操作系统都会输出/etc/nginx/site-available

提取文件路径和扩展名

path模块还常用于提取文件名、扩展名、基础路径等用途,下面是一个例子。

const path = require('path');

const fileinfo = path.parse('e:/workspace-me/demo/a.txt');
console.log(fileinfo);

上面代码返回值是一个对象,内容如下:

{
  root: 'e:/',
  dir: 'e:/workspace-me/demo',
  base: 'a.txt',
  ext: '.txt',
  name: 'a'
}

实际开发中,我们可以很方便的从该对象中提取出文件路径相关的重要信息。此外,path模块也支持path.extname()path.basename()等方法用于单独获取这些信息,具体可以参考文档。

计算相对路径

path.relative()方法可以很方便的计算相对路径。

const path = require('path');

const basepath = 'http://myblog/resources/js/';
const filepath = 'http://myblog/1.png';

const relativepath = path.relative(basepath, filepath);
console.log(relativepath);

path.relative()方法会返回第二个参数路径相对于第一个参数路径的相对值,上面例子输出结果为../../1.png

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap