Node.js的路径模块中文件路径互动的介绍

104 阅读2分钟

Node.js的路径模块提供了与文件路径互动的有用功能

path 模块提供了很多非常有用的功能来访问文件系统并与之互动。

没有必要安装它。作为Node核心的一部分,它可以通过要求它来使用。

const path = require('path')

该模块提供了path.sep ,它提供了路径段分离器(Windows上的\ ,Linux/macOS上的/ ),以及path.delimiter ,它提供了路径分隔符(Windows上的; ,Linux/macOS上的: )。

这些是path 方法。

path.basename()

返回一个路径的最后部分。第二个参数可以过滤掉文件扩展名。

require('path').basename('/test/something') //something
require('path').basename('/test/something.txt') //something.txt
require('path').basename('/test/something.txt', '.txt') //something

path.dirname()

返回路径中的目录部分。

require('path').dirname('/test/something') // /test
require('path').dirname('/test/something/file.txt') // /test/something

path.extname()

返回路径的扩展名部分

require('path').extname('/test/something') // ''
require('path').extname('/test/something/file.txt') // '.txt'

path.isAbsolute()

如果是绝对路径则返回true

require('path').isAbsolute('/test/something') // true
require('path').isAbsolute('./test/something') // false

path.join()

连接一个路径的两个或多个部分。

const name = 'flavio'
require('path').join('/', 'users', name, 'notes.txt') //'/users/flavio/notes.txt'

path.normalize()

试图计算实际的路径,当它包含相对指定符,如... ,或双斜杠。

require('path').normalize('/users/flavio/..//test.txt') ///users/test.txt

path.parse()

解析一个对象的路径和组成它的片段。

  • root:根目录
  • dir: 从根开始的文件夹路径
  • base: 文件名+扩展名
  • name:文件名
  • ext:文件扩展名

例子。

require('path').parse('/users/test.txt')

结果是

{
  root: '/',
  dir: '/users',
  base: 'test.txt',
  ext: '.txt',
  name: 'test'
}

path.relative()

接受2个路径作为参数。基于当前工作目录,返回从第一个路径到第二个路径的相对路径。

例子。

require('path').relative('/Users/flavio', '/Users/flavio/test.txt') //'test.txt'
require('path').relative('/Users/flavio', '/Users/flavio/something/test.txt') //'something/test.txt'

path.resolve()

你可以用path.resolve() ,得到相对路径的绝对路径计算。

path.resolve('flavio.txt') //'/Users/flavio/flavio.txt' if run from my home folder

通过指定第二个参数,resolve 将把第一个参数作为第二个参数的基础。

path.resolve('tmp', 'flavio.txt')//'/Users/flavio/tmp/flavio.txt' if run from my home folder

如果第一个参数以斜线开头,这意味着它是一个绝对路径。

path.resolve('/etc', 'flavio.txt')//'/etc/flavio.txt'