path
因爲 Node.js 是可以運行在不同操作系統上的,而不同操作系統的路徑分隔符是不一樣的,在 Windows 中,標準分隔符是“\”,在 UNIX 中,標準分隔符是“/”,還有它們之間根路徑也是不一樣的,所以 Node.js Path 模塊提供了一些用於處理文件路徑的小工具。
注意在使用前需要通過以下方式引入該模塊:
const path = require("path");
屬性
- path.sep:路徑分割符,在不同操作系統獲取的不一樣,在 Windows `\`,在 UNIX 中 `/`
- path.delimiter:環境變量分割符,在不同操作系統獲取的不一樣,在 Windows `;`,在 UNIX 中 `:`
方法
- path.basename(path[, ext]): 返回路徑中的最後一部分,帶了擴展名參數,則返回路徑最後一個部分不包含擴展名
- path.dirname(path): 返回路徑中代表文件夾的部分
- path.extname(path): 返回路徑中文件的後綴名
- path.parse(pathString): 返回路徑字符串的對象
- path.format(pathObject): 從對象中返回路徑字符串,和 path.parse 相反
- path.isAbsolute(path): 判斷參數 path 是否是絕對路徑
- path.join([...paths]) 用於連接路徑。該方法的主要用途在於,會正確使用當前系統的路徑分隔符
- path.normalize(path) 規範化給定路徑,解析 '..' 和 '.'
- path.relative(from, to) 將絕對路徑轉爲相對路徑,返回從 from 到 to 的相對路徑
- path.resolve([...paths]) 方法將一系列路徑或路徑段解析爲絕對路徑。給定的路徑序列從右到左處理,每個後續路徑前置,直到構造絕對路徑
代碼舉例:
let p = '/foo/bar/baz/asdf/quux.html';
console.log(path.basename(p)); // quux.html
console.log(path.basename(p, '.html')); // quux
console.log(path.extname(p)); // .html
let p = '/foo/bar/baz/asdf/quux.html';
console.log(path.parse(p));
let pathObj = {
root: 'E:\\', // 根路徑
dir: 'E:\\Note\\Node.js', // 目錄
base: '12.路徑.html', // 文件
ext: '.html', // 後綴名
name: '12.路徑' // 文件名
};
console.log(path.format(pathObj));
console.log(path.isAbsolute(p)); // true
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux')); //\foo\bar\baz\asdf\quux
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '..')); // \foo\bar\baz\asdf
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '../..')); // \foo\bar\baz
console.log(path.normalize('C:\\temp\\\\foo\\bar\\..\\')); // C:\temp\foo\
// ..\..\impl\bbb
console.log(path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'));
console.log(path.resolve('\\foo\\bar', '.\\baz')); // e:\foo\bar\baz
console.log(path.resolve('f:', '\\foo\\bar', '.\\baz')); // f:\foo\bar\baz
// 依次從右邊給定的路徑開始,解析出絕對路徑,若給定的路徑沒有包含根路徑,那則以當前運行文件所以在根路徑爲準。