當前位置:
首頁 > 知識 > nodeJS之路徑PATH模塊

nodeJS之路徑PATH模塊

前面的話

path模塊包含一系列處理和轉換文件路徑的工具集,通過 require("path")可用來訪問這個模塊。本文將詳細介紹path模塊

路徑組成

【path.dirname(p)】

返迴路徑p所在的目錄

var path = require("path");
console.log(path.dirname("/foo/bar/baz/asdf/a.txt")); // /foo/bar/baz/asdf
console.log(path.dirname("/foo/bar/baz/asdf/")); // /foo/bar/baz
console.log(path.dirname("C:/test/aaa")); // C:/test

【path.basename(p[, ext])】

返迴路徑的最後一個部分,即文件名。參數ext為需要截掉的後綴內容

var path = require("path");
console.log(path.basename("/foo/bar/baz/asdf/a.txt")); // a.txt
console.log(path.basename("/foo/bar/baz/asdf/a.txt",".txt")); // a
console.log(path.basename("/foo/bar/baz/asdf/")); // asdf
console.log(path.basename("C:/test/aaa")); // aaa

【path.extname(p)】

返迴路徑p的擴展名,從最後一個"."到字元串的末尾。如果最後一個部分沒有".",或者路徑是以"."開頭,則返回空字元串

var path = require("path");
console.log(path.extname("/foo/bar/baz/asdf/a.txt")); // .txt
console.log(path.extname("/foo/bar/baz/asdf/a.txt.b")); // .b
console.log(path.extname("/foo/bar/baz/asdf/a.")); // .
console.log(path.extname("C:/test/aaa/.")); // ""
console.log(path.extname("C:/test/aaa")); // ""

分隔符

【path.sep】

返回對應平台下的文件分隔符,win下為"",*nix下為"/"

var path = require("path");
console.log(path.sep); // win下為,*nix下為/
console.log("foo\bar\baz".split(path.sep)); // [ "foo", "bar", "baz" ]
console.log("foo/bar/baz".split(path.sep)); // win下返回["foo/bar/baz"],但在*nix系統下會返回["foo","bar","baz"]

【path.delimiter】

返回對應平台下的路徑分隔符,win下為";",*nix下為":"

var path = require("path");
console.log(path.delimiter); //win下為「;」,*nix下為「:」
console.log(path.sep); // win下為,*nix下為/

規範化

【path.normalize(p)】

規範化路徑,處理冗餘的「..」、「.」、「/」字元。發現多個斜杠時,會替換成一個斜杠。當路徑末尾包含一個斜杠時,保留。Windows系統使用反斜杠

var path = require("path");
console.log(path.normalize("a/b/c/../user/bin"));//auserin
console.log(path.normalize("a/b/c///../user/bin/"));//auserin
console.log(path.normalize("a/b/c/../../user/bin"));//auserin
console.log(path.normalize("a/b/c/.././///../user/bin/.."));//auser
console.log(path.normalize("a/b/c/../../user/bin/../../"));//a
console.log(path.normalize("a/../../user/bin/../../"));//..
console.log(path.normalize("a/../../user/bin/../../../../"));//......
console.log(path.normalize("./a/.././user/bin/./"));//userin

【path.join([path1], [path2], [...])】

將多個路徑結合在一起,並轉換為規範化路徑

var path = require("path");
console.log(path.join("////./a", "b////c", "user/"));//acuser
console.log(path.join("a", "../../", "user/"));//..user

絕對和相對

【path.resolve([from ...], to)】

從源地址 from 到目的地址 to 的絕對路徑,類似在shell里執行一系列的cd命令

path.resolve("foo/bar", "/tmp/file/", "..", "a/../subfile")

類似於:

cd foo/bar
cd /tmp/file/
cd ..
cd a/../subfile
pwd

[注意]如果某個from或to參數是絕對路徑(比如 "E:/abc",或是以「/」開頭的路徑),則將忽略之前的from參數

var path = require("path");
console.log(path.resolve(".", "testFiles/..", "trdLayer"));//D:project rdLayer
console.log(path.resolve("..", "testFiles", "a.txt"));//D: estFilesa.txt
console.log(path.resolve("D:", "abc", "D:/a"));//D:a
console.log(path.resolve("abc", "ok.gif"));//D:projectabcok.gif
console.log(path.resolve("abc", "..", "a/../subfile")); //D:projectsubfile

【path.isAbsolute(path)】

path是一個絕對路徑(比如 "E:/abc"),或者是以「/」開頭的路徑,二者都會返回true

var path = require("path");
console.log(path.isAbsolute("../testFiles/secLayer"));//false
console.log(path.isAbsolute("./join.js"));//false
console.log(path.isAbsolute("temp"));//false
console.log(path.isAbsolute("/temp/../.."));//true
console.log(path.isAbsolute("E:/github/nodeAPI/abc/efg"));//true
console.log(path.isAbsolute("///temp123"));//true

【path.relative(from, to)】

獲取從 from 到 to 的相對路徑,可以看作 path.resolve 的相反實現

path.resolve(from, path.relative(from, to)) == path.resolve(to)

var path = require("path");
console.log(path.relative("C:\ est", "C:\impl\bbb"));//..implbb
console.log(path.relative("C:/test/aaa", "C:/bbb"));//....bb
console.log(path.relative("C:/test/aaa", "D:/bbb"));//D:bb

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科技優家 的精彩文章:

Ajax請求匯總(一)
opcache開啟前後性能對比
Ionic進行PC端Web開發時通過腳本壓縮提高第一次載入效率

TAG:科技優家 |

您可能感興趣

Paint API之PathEffect(路徑效果)
通過路徑ControlLogix->1770KF2->OPC Client 傳送PLC2 type的message
Spring Security 實現 antMatchers 配置路徑的動態獲取
經驗:解決Inno Setup 和一些應用程序在Windows 中不能訪問UNC路徑的問題
Creo/Preo軟體自學第二篇:部分配置文件在config中路徑的設置
如何使用Google Analytics 360中的高級分析探索訪客路徑?
複製一加路徑?OPPO拆分子品牌Realme搶食印度
使用xSignals定義高速信號路徑
SVG 路徑<path>
Python學習的一些路徑推薦
Blast2go安裝之中間站:MySQL安裝及修改數據保存路徑
曠視孫劍團隊提出AutoML神經架構搜索新方法:單路徑One-Shot,更精確更省時
springboot丟失jdk路徑——jdk安裝與jdk多版本管理
模擬路徑預覽畫面,強大的《Vermeer》無人機AR應用誕生
【乾貨】C盤空間不夠?如何更改Windows Update默認下載路徑
最小生成樹prime演算法、kruskal演算法 最短路徑演算法floyd、dijkstra
Python爬蟲 | 一條高效的學習路徑
推薦一條高效的Python爬蟲學習路徑!
Photoshop巧用路徑工具設計曲扭圖標教程
從Margiela到Virgil,看看這幾年解構運動鞋的發展路徑啊