nodeJS之路徑PATH模塊

来源:http://www.cnblogs.com/xiaohuochai/archive/2017/05/30/6921875.html
-Advertisement-
Play Games

[1]路徑組成 [2]分隔符 [3]規範化 [4]絕對和相對 [5] [6] [7] ...


前面的話

  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'));//a\b\user\bin
console.log(path.normalize('a/b/c///../user/bin/'));//a\b\user\bin\
console.log(path.normalize('a/b/c/../../user/bin'));//a\user\bin
console.log(path.normalize('a/b/c/.././///../user/bin/..'));//a\user
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/./'));//user\bin\

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

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

var path = require('path');
console.log(path.join('////./a', 'b////c', 'user/'));//\a\b\c\user
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\trdLayer
console.log(path.resolve('..', 'testFiles', 'a.txt'));//D:\testFiles\a.txt
console.log(path.resolve('D:', 'abc', 'D:/a'));//D:\a
console.log(path.resolve('abc', 'ok.gif'));//D:\project\abc\ok.gif
console.log(path.resolve('abc', '..', 'a/../subfile')); //D:\project\subfile

【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:\\\test', 'C:\\\impl\\bbb'));//..\impl\bbb
console.log(path.relative('C:/test/aaa', 'C:/bbb'));//..\..\bbb
console.log(path.relative('C:/test/aaa', 'D:/bbb'));//D:\bbb

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 《jQuery基礎教程(第4版)》是jQuery經典技術教程的*升級版,涵蓋jQuery 1.10.x和jQuery2.0.x。本書前6章以通俗易懂的方式講解了jQuery的核心組件,包括jQuery的選擇符、事件、動畫、DOM操作、Ajax支持等。第7章和第8章介紹了jQueryUI、jQuery ...
  • 這是Webpack+React系列配置過程記錄的第五篇。其他內容請參考: 第一篇:使用webpack、babel、react、antdesign配置單頁面應用開發環境 第二篇:使用react-router實現單頁面應用路由 第三篇:優化單頁面開發環境:webpack與react的運行時打包與熱更新 ...
  • 一、after()和before()方法的區別 after()——其方法是將方法裡面的參數添加到jquery對象後面去; 如:A.after(B)的意思是將B放到A後面去; before()——其方法是將方法裡面的參數添加到jquery對象前面去。 如:A.before(B)的意思是將A放到B前面去 ...
  • 轉載自:http://blog.csdn.net/lun379292733/article/details/8169807/ <script type="text/JavaScript"> /* * 手機號碼格式 * 只允許以13、15、18開頭的號碼 * 如:13012345678、1592922 ...
  • 使用NodeJS & SocketIO & Express & EJS & MongoDB打造多人線上聊天室。 ...
  • IE6下有不少奇怪的Bug,今天就碰到一個,float:right換行bug,情況是併列的幾個塊級元素如div和span,一些設置了左浮動一些設置右浮動,一行的寬度足夠放下所有的塊級元素,但此時ie6則顯示右浮動的其中一塊換行了,下麵給出實例和解決方法: 實例說明下:html結構如下 <div> < ...
  • 介紹 sChart.js 作為一個小型簡單的圖表庫,沒有過多的圖表類型,只包含了柱狀圖、折線圖、餅狀圖和環形圖四種基本的圖表。麻雀雖小,五臟俱全。sChart.js 基本可以滿足這四種圖表的需求。而它的小,體現在它的體積上,代碼只有 8kb,如果經過伺服器的Gzip壓縮,那就更小了,因此不用擔心造成 ...
  • 本篇是在VPS上搭建Hexo靜態博客的第一篇博文,寫本篇的目的一是紀念一下,二是作為一個部署文檔保留。 "博客地址" 相關描述 VPS環境是在 "搬瓦工" 上安裝的centos6(x86),1核,512MB,10GB,1000GB/月的配置($19.99/年,可用支付寶支付),主要的功能是搭個梯子, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...