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,看看這幾年解構運動鞋的發展路徑啊