處理 Node.js 中的檔案路徑
身為 Tailwind Traders 的新開發人員,您必須知道如何管理檔案和資料夾的路徑。 如果檔案或資料夾很多,手動建立路徑就會變得相當繁瑣。 Node.js 提供一些內建的常數與公用程式,讓您更方便建立檔案路徑。
使用 __dirname 來判斷目前目錄
有時候,您不知道程式執行所在的目錄。 您只希望其使用目前目錄的路徑即可。
📂 stores
📂 201
📂 sales
Node.js 會透過常數 __dirname
公開目前目錄的完整路徑。
console.log(__dirname);
如果您從 下列資料夾結構中的 sales 資料夾執行該程式代碼,則 _dirname
值為:
/stores/201/sales
使用路徑模組的路徑
路徑是經常出現的問題,Node.js 包含稱為 path 的模組,專門用來處理路徑。
就像 fs 模組一樣,path 模組也隨附於 Node.js 中,且不需要安裝。 您只需要在檔案頂端參考此模組即可。
const path = require("path");
使用path.join聯結路徑
path 模組可處理單純為字串的檔案與資料夾路徑概念。 例如,如果想要取得 [stores/201] 資料夾的路徑,您可以使用 path 模組。
const currentPath = path.join("stores", "201");
console.log(currentPath); // stores/201
const fullPath = path.join(__dirname, "stores", "201");
console.log(fullPath); // /nodejs-files/stores/201
使用 path 模組而非串連字串的原因,是因為您的程式可能會在 Windows 或 Linux 上執行。 無論程式在哪個作業系統上執行,path 模組都能夠正確地設定路徑格式。 在上述範例中,path.join
會在 Windows 上傳回 stores\201
,且包含反斜線而非斜線。
使用path.extname判斷擴展名
path 模組也可以識別檔案名稱的副檔名。 若想要識別某個檔案是否為 JSON 檔案,則可使用 path.extname
方法。
console.log(path.extname("sales.json"));
輸出如下:
.json
提示
請注意,path 模組並無法判斷內容是否實際存在。 路徑為概念,而非實體, 此模組只能建立和剖析字串。
取得了解檔案或路徑所需的所有資訊
path 模組包含許多不同的方法,這些方法可執行各種動作。 另一方面,您可以使用 parse
方法來取得了解路徑或檔案所需的大部分資訊。 此方法會傳回物件,其中包含您目前所在的目錄、檔案名稱、副檔名,甚至是沒有副檔名的檔案名稱。
const currentPath = path.parse("stores/201/sales.json")
console.log(currentPath);
const fullPath = path.join(__dirname, "stores", "201", "/sales.json");
console.log(path.parse(fullPath));
輸出為:
{
root: '',
dir: 'stores/201',
base: 'sales.json',
ext: '.json',
name: 'sales'
}
{
root: '/',
dir: '/workspaces/node-essentials/nodejs-files/stores/201',
base: 'sales.json',
ext: '.json',
name: 'sales'
}
path 模組中還有許多實用的公用程式方法,但這裡所述的方法可能會是最常使用的核心概念。 在下一個練習中,您將使用 path 模組來撰寫路徑,以及識別 .json 檔案。