處理 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 檔案。