如何在Node中與檔案路徑互動並對其進行操作

系統中的每個檔案都有一個路徑。

在Linux和macOS上,路徑可能如下:

/users/flavio/file.txt

而Windows電腦則不同,其結構如下:

C:\users\flavio\file.txt

在應用程式中使用路徑時,需要注意這個差異。

您可以通過以下方式在文件中引入這個模組:

const path = require('path')

然後就可以使用其中的方法了。

從路徑中獲取資訊

給定一個路徑,可以使用以下方法從中獲取資訊:

  • dirname:獲取檔案的上級資料夾
  • basename:獲取檔案名稱部分
  • extname:獲取檔案擴展名

範例:

const notes = '/users/flavio/notes.txt'

path.dirname(notes) // /users/flavio
path.basename(notes) // notes.txt
path.extname(notes) // .txt

如果要獲取沒有擴展名的檔案名稱,可以將第二個引數指定給basename

path.basename(notes, path.extname(notes)) //notes

處理路徑

可以使用path.join()來結合路徑的兩個或多個部分:

const name = 'flavio'
path.join('/', 'users', name, 'notes.txt') //'/users/flavio/notes.txt'

可以使用path.resolve()來計算相對路徑的絕對路徑:

path.resolve('flavio.txt') //'/Users/flavio/flavio.txt'(從我的家目錄執行時)

在這種情況下,Node會將/flavio.txt附加到當前工作目錄。如果您指定了第二個參數,resolve將使用第一個參數作為第二個參數的基礎:

path.resolve('tmp', 'flavio.txt')//'/Users/flavio/tmp/flavio.txt'(從我的家目錄執行時)

如果第一個參數以斜線開頭,則表示它是絕對路徑:

path.resolve('/etc', 'flavio.txt')//'/etc/flavio.txt'

path.normalize()是另一個有用的函數,當路徑包含...或雙斜線等相對標識時,它將嘗試計算實際路徑:

path.normalize('/users/flavio/..//test.txt') ///users/test.txt

resolve和normalize都不會檢查路徑是否存在。它們只是基於它們獲得的資訊計算一個路徑。