W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
穩(wěn)定性: 3 - 穩(wěn)定
Node.js路徑(path)模塊包含一系列用于處理和轉(zhuǎn)換文件路徑的工具集?;舅械姆磸?fù)都僅對字符串轉(zhuǎn)換。文件系統(tǒng)不會檢查路徑是否有效。
你可以通過require('path')
來訪問這個模塊:
const path = require('path');
Node.js路徑模塊包含下文中介紹的方法:
用于規(guī)范化路徑,注意'..'
和'.'
。
發(fā)現(xiàn)多個斜杠時,會替換成一個斜杠。當路徑末尾包含一個斜杠時,保留。
Windows系統(tǒng)使用反斜杠。
例如:
path.normalize('/foo/bar//baz/asdf/quux/..')
// returns
'/foo/bar/baz/asdf'
用于連接所有的參數(shù),并規(guī)范化輸出路徑。
參數(shù)必須是字符串。在v0.8版本,非字符參數(shù)會被忽略。v0.10之后的版本后拋出異常。
例如:
path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')
// returns
'/foo/bar/baz/asdf'
path.join('foo', {}, 'bar')
// throws exception
TypeError: Arguments to path.join must be strings
能夠?qū)?code>to參數(shù)解析為絕對路徑。
如果參數(shù)to
不是一個相對于參數(shù)from
的絕對路徑,to
會添加到from
右側(cè),直到找到一個絕對路徑為止。如果使用所有from
參數(shù)后,還是沒有找到絕對路徑,將會使用當前工作目錄。返回的路徑已經(jīng)規(guī)范化過,并且去掉了尾部的斜杠(除非是根目錄)。非字符串的參數(shù)會被忽略。
另一種思路就是在shell里執(zhí)行一系列的cd
命令。
path.resolve('foo/bar', '/tmp/file/', '..', 'a/../subfile')
類似于:
cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd
不同點是,不同的路徑不需要存在的,也可能是文件。
例如:
path.resolve('/foo/bar', './baz')
// returns
'/foo/bar/baz'
path.resolve('/foo/bar', '/tmp/file/')
// returns
'/tmp/file'
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif')
// if currently in /home/myself/node, it returns
'/home/myself/node/wwwroot/static_files/gif/image.gif'
判斷參數(shù)path
是否是絕對路徑。一個絕對路徑解析后都會指向相同的位置,無論當前的工作目錄在哪里。
Posix例子:
path.isAbsolute('/foo/bar') // true
path.isAbsolute('/baz/..') // true
path.isAbsolute('qux/') // false
path.isAbsolute('.') // false
Windows例子:
path.isAbsolute('//server') // true
path.isAbsolute('C:/foo/..') // true
path.isAbsolute('bar\\baz') // false
path.isAbsolute('.') // false
解決從from
到to
的相對路徑。
有時我們會有2個絕對路徑,需要從中找到相對目錄。這是path.resolve
的逆實現(xiàn):
path.resolve(from, path.relative(from, to)) == path.resolve(to)
例如:
path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb')
// returns
'..\\..\\impl\\bbb'
path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb')
// returns
'../../impl/bbb'
返回路徑p
所在的目錄。和Unixdirname
命令類似。
例如:
path.dirname('/foo/bar/baz/asdf/quux')
// returns
'/foo/bar/baz/asdf'
返回路徑的最后一個部分。和Unixbasename
命令類似。
例如:
path.basename('/foo/bar/baz/asdf/quux.html')
// returns
'quux.html'
path.basename('/foo/bar/baz/asdf/quux.html', '.html')
// returns
'quux'
返回路徑p
的擴展名,從最后一個'.'到字符串的末尾。如果最后一個部分沒有'.' ,或者路徑是以'.'開頭,則返回空字符串。例如:
path.extname('index.html')
// returns
'.html'
path.extname('index.coffee.md')
// returns
'.md'
path.extname('index.')
// returns
'.'
path.extname('index')
// returns
''
特定平臺的文件分隔符,'\\'
或'/'
。
*nix上的例子:
'foo/bar/baz'.split(path.sep)
// returns
['foo', 'bar', 'baz']
Windows的例子:
'foo\\bar\\baz'.split(path.sep)
// returns
['foo', 'bar', 'baz']
特定平臺的分隔符,;
或者':'
。
*nix上的例子:
console.log(process.env.PATH)
// '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'
process.env.PATH.split(path.delimiter)
// returns
['/usr/bin', '/bin', '/usr/sbin', '/sbin', '/usr/local/bin']
Windows例子:
console.log(process.env.PATH)
// 'C:\Windows\system32;C:\Windows;C:\Program Files\nodejs\'
process.env.PATH.split(path.delimiter)
// returns
['C:\\Windows\\system32', 'C:\\Windows', 'C:\\Program Files\\nodejs\\']
返回路徑字符串的對象。
*nix上的例子:
path.parse('/home/user/dir/file.txt')
// returns
{
root : "/",
dir : "/home/user/dir",
base : "file.txt",
ext : ".txt",
name : "file"
}
Windows例子:
path.parse('C:\\path\\dir\\index.html')
// returns
{
root : "C:\\",
dir : "C:\\path\\dir",
base : "index.html",
ext : ".html",
name : "index"
}
從對象中返回路徑字符串,和path.parse
相反:
path.format({
root : "/",
dir : "/home/user/dir",
base : "file.txt",
ext : ".txt",
name : "file"
})
// returns
'/home/user/dir/file.txt'
提供上述path
路徑訪問,不過總是以posix兼容的方式交互。
提供上述path
路徑訪問,不過總是以win32兼容的方式交互。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: