理解Path對路徑進行操作的API


閱讀目錄

一:理解normalize方法

該方法將非標准路徑字符串轉換為標准路徑字符串,在轉換過程中執行如下處理:

1. 解析路徑字符串中的 '..' 字符串與 '.' 字符串,返回解析后的標准路徑。
2. 將多個斜杠字符串轉換為一個斜杠字符串,比如將 '\\' 轉換為 '\'。
3. 將windows操作系統中的反斜杠字符串轉換為正斜杠字符串。
4. 如果路徑字符串以斜杠字符串結尾,則在轉換后的完整路徑字符串末尾保留該斜杠字符串。

該方法使用如下所示:

path.normalize(path);

在該方法中,使用一個參數path,該參數值為需要被轉換的路徑字符串。該方法返回被轉換后的路徑字符串。

下面我們在項目中根目錄下建立一個a子目錄,在a子目錄下新建一個b子目錄,然后在b子目錄下新建一個message.txt, 內容為:我喜歡編寫代碼,我們將使用normalize方法解析 './/a//b//d//..//c/e//..//'路徑字符串,解析該路徑后,並且讀取message.txt文件的內容,如下代碼:

const fs = require('fs');

const path = require('path'); const myPath = path.normalize('.//a//b//d//../e//..//'); console.log(myPath); // 輸出 a/b/  const file = fs.createReadStream(myPath + 'message.txt'); file.on('data', (data) => { console.log(data.toString()); // 輸出 我喜歡編寫代碼 });

輸出如下所示:

二:理解join方法

該方法將多個參數值字符串結合為一個路徑字符串,使用方式如下所示:

path.join([path1], [path2], [...]);

在該方法中,使用一個或多個字符串值參數,該方法返回將這些字符串值參數結合而成的路徑字符串。

請看如下demo, 在項目的根目錄下有 a/b/message.txt, 內容還是為 '我喜歡編寫代碼', 請看如下代碼:

const fs = require('fs');

const path = require('path');

const myPath = path.join(__dirname, 'a', 'b');

console.log(myPath);

const file = fs.createReadStream(myPath + '/message.txt');

file.on('data', (data) => {
  console.log(data.toString());
});

輸出如下所示:

三:理解dirname方法

該方法用於獲取一個路徑中的目錄名,使用方法如下所示:

path.dirname(p);

該方法使用一個參數,參數值為一個路徑,可以是相對路徑、絕對路徑、也可以為一個目錄的路徑、也可以是一個文件的路徑。

當參數值為目錄的路徑時:該方法返回該目錄的上層目錄。
當參數值為文件路徑時:該方法返回該文件所在的目錄。

請看如下demo:

const path = require('path');

// 指定相對目錄路徑
const a = path.dirname('./a/b/c/d');
console.log(a); // 輸出 ./a/b/c

// 指定相對文件路徑
const b = path.dirname('./a/b/c/d/message.txt');
console.log(b); // 輸出 ./a/b/c/d

// 指定絕對目錄路徑
const c = path.dirname('/a/b/c/d');
console.log(c); // 輸出 /a/b/c

// 指定絕對文件路徑
const d = path.dirname('/a/b/c/d/message.txt');
console.log(d); // 輸出 /a/b/c/d

四:理解basename方法

該方法用於獲取一個路徑中的文件名,使用方式如下所示:

path.basename(p, [ext]);

在該方法中,使用兩個參數,p參數為必須的參數,它必須為一個文件的完整路徑,可以是相對路徑,也可以是一個絕對路徑。
ext是可選參數,該參數的作用是在方法返回的文件名中去除該文件的擴展名。請看如下所示的基本代碼:

const path = require('path');

// 默認返回文件名 index.html
const a = path.basename('/a/b/c/d/index.html');
console.log(a); // 輸出 index.html

// 返回index.html后,去除.html擴展名,因此會返回 index
const b = path.basename('./a/b/c/d/index.html', '.html');
console.log(b); // 輸出 index

// 返回index.html后,去除html的擴展名,因此會返回 index.
const c = path.basename('./a/b/c/d/index.html', 'html');
console.log(c); // 輸出 index.

// 如果擴展名不存在的話,什么都不去除
const d = path.basename('./a/b/c/d/index.html', 'ejx');
console.log(d); // 輸出 index.html

五:理解extname方法

該方法用於獲取一個路徑中的擴展名,使用方法如下所示:

path.extname(p);

在該方法中,使用一個參數p,參數p必須為一個文件的完整路徑,可以為相對路徑,也可以為絕對路徑,在該參數值中指定文件的擴展名(以'.'開始),當參數值中指定的文件沒有指定擴展名時,會返回一個空字符串。

比如如下代碼:

const path = require('path');

const a = path.extname('/a/index.html');
console.log(a); // 輸出 '.html'

const b = path.extname('/a/index.');
console.log(b); // 輸出 '.'

const c = path.extname('/a/index');
console.log(c); // 輸出 ''


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM