1. 程式人生 > >node學習六:路徑操作

node學習六:路徑操作

首先需要匯入path模組:

const path = require('path');

path.basename(path[,.ext]):

// 獲取路徑的最後一部分
console.log(path.basename('/foo/bar/baz/asdf/quux.html'));
console.log(path.basename('/foo/bar/baz/asdf/quux.html', '.html'));

path.dirname(path):

// 獲取路徑
console.log(__dirname);
console.log(path.dirname(__dirname));
console.log(path.dirname('/abc/qqq/www/abc'));

path.extname(path):

// 獲取副檔名稱
console.log(path.extname('index.html'));

path.parse(path):

let obj = path.parse(__filename);
console.log(obj);
/*
{ root: 'E:\\', 檔案的跟路徑
  dir: 'E:\\node\\day02\\02-code',檔案的全路徑
  base: '02.js',檔案的名稱
  ext: '.js',副檔名
  name: '02' 檔名稱
}
*/

path.format(pathObj):

let objpath = {
    root : 'd:\\',
    dir : 'd:\\qqq\\www',
    base : 'abc.txt',
    ext : '.txt',
    name : 'abc'
};
let strpath = path.format(objpath);
console.log(strpath);

path.isAbsolute(path):

// 判斷是否為絕對路徑
console.log(path.isAbsolute('/foo/bar'));
console.log(path.isAbsolute('C:/foo/..'));

path.join([...paths]):

// 拼接路徑(..表示上層路徑;.表示當前路徑),在連線路徑的時候會格式化路徑
console.log(path.join('/foo', 'bar', 'baz/asdf', 'quux', '../../'));

path.normalize(path):

// 規範化路徑
console.log(path.normalize('/foo/bar//baz/asdf/quux/..'));
console.log(path.normalize('C:\\temp\\\\foo\\bar\\..\\'));

path.relative(from, to):

// 計算相對路徑
console.log(path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'));
console.log(path.relative('C:\\orandea\\test\\aaa', 'C:\\orandea\\impl\\bbb'));

path.resolve([...paths]):(對於相對路徑與絕對路徑的處理有區別)

指定的路徑序列是從右往左開始處理的,後面的 path 被依次處理,直到構造完絕對路徑。 例如,指定的路徑片段序列為:/foo/barbaz,則呼叫 path.resolve('/foo', '/bar', 'baz') 會返回 /bar/baz

如果處理完所有 path 片段後還未生成絕對路徑,則使用當前工作目錄。

生成的路徑是規範化後的,且末尾的斜槓會被刪除,除非路徑是根目錄。

長度為零的 path 片段會被忽略。

如果沒有傳入 path 片段,則返回當前工作目錄的絕對路徑。

// 解析路徑
console.log(path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif'));

path.delimiter:

console.log(path.delimiter);//環境變數分隔符(windows中使用; linux中使用:)

path.sep:

console.log(path.sep);//表示路徑分隔符(windows是\ Linux是/)