如何在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都不會檢查路徑是否存在。它們只是基於它們獲得的資訊計算一個路徑。