在node.js中,提供了一個path某塊,在這個模塊中,提供了許多使用的,可被用來處理與轉換路徑的方法與屬性。下面我們就來對這些方法與屬性做一下介紹。
(1)normalize方法
此方法用於將非標准路徑的字符串轉化成標准路徑字符串,在轉換過程中執行如下的操作
1、解析路徑中的".."和"."字符串,返回解析后的標准路徑。
2、將多個斜杠字符串轉換為一個斜杠字符串,例如將"\\"轉換為"\"。
3、將window操作系統中的反斜杠字符串轉換為正斜杠字符串。
4、如果路徑字符串以斜杠字符串結尾,則會在轉換后的完整路徑字符串末尾保留該斜杠字符串。
該方法的使用方式如下:
path.normalize(p)
在normalize方法中,使用一個參數,參數值為需要被轉換的路徑字符串。該方法返回被轉換后的路徑字符串。
var fs = require('fs');
var path = require('path');
var myPath = path.normalize(".//a//b//d//..//c/e//..//");
console.log(myPath); // a\b\c\
var path = require('path');
var myPath = path.normalize(".//a//b//d//..//c/e//..//");
console.log(myPath); // a\b\c\
(2)join方法
該方法將多個參數值字符串結合成一個路徑字符串,使用方式如下:
path.join([path1], [path2], [...])
在該方法中,可以使用一個或多個字符串值參數,該參數返回將這些字符串值參數結合而成的路徑。
var joinPath = path.join(__dirname, 'a', 'b', 'c');
console.log(joinPath); // D:\nodePro\fileTest\a\b\c
console.log(joinPath); // D:\nodePro\fileTest\a\b\c
__dirname變量值代表程序運行的根目錄。
(3)resolve方法
該方法以應用程序根目錄為起點,根據所有的參數值字符串解析出一個絕對路徑。該方法的使用方式如下:
path.resolve(path1, [path2], [...])
在resolve方法中,可以指定一個或多個參數,每個參數值均為字符串。關於參數的選擇參見課本或者是官方API
var resolve = path.resolve('a', 'b', 'c');
console.log(resolve); // D:\nodePro\fileTest\a\b\c
console.log(resolve); // D:\nodePro\fileTest\a\b\c
(4)relative方法
該方法用於獲取兩個路徑之間的相對關系,使用方式如下:
path.relative(from , to);
在relative方法中使用兩個參數,參數值均為一個路徑,該路徑可以是相對路徑,也可以是絕對路徑,可以為一個目錄的路徑,也可以為一個文件的路徑。方法返回如果在代碼中將第一個路徑視為當前路徑並使用相對路徑來指定第二個路徑時,應該使用的表達式。在window操作系統中這兩條路徑應該位於同一個硬盤分區中。否則方法直接返回第二個參數值的絕對路徑。
var relative = path.relative('/fileTest/a/b/c', '/fileTest/china/shang');
console.log(relative); // ..\..\..\china\shang
console.log(relative); // ..\..\..\china\shang
(5)dirname方法
該方法用於獲取一個路徑中的目錄名,使用方式如下:
path.dirname(p);
該方法使用一個參數,參數為一個路徑可以是相對路徑,絕對路徑,可以為一個目錄的路徑,也可以為一個文件的路徑。當參數值為目錄路徑時,該方法返回該目錄的上層目錄;當參數值為文件路徑時,該方法返回該文件所在的目錄。
var dirname = path.dirname("./a/b");
console.log(dirname); // .a
console.log(dirname); // .a
(6)basename方法
該方法用於獲取一個路徑中的文件名,使用方式如下:
path.basename(p, [ext]);
該方法包含兩個參數,第一個參數p為必須指定的參數,ext參數為可選參數。p參數值必須為一個文件的完整路徑,可以是相對路徑,也可以使絕對路徑。ext參數值用於在方法所返回的文件名中去掉文件的擴展名。因此該參數必須等於p參數值中指定的文件的擴展名(以“.”開始),否則不能去除該擴展名,該方法返回p參數中指定文件的文件名,當ext參數被指定后,該文件命中不包含文件擴展名。
var fileName = path.basename('./a/b.mess.txt');
console.log(fileName); // mess,txt
var name = path.basename('./a/b.mess.txt', '.txt');
console.log(name); // mess
(7)extname方法
該方法用於獲取一個路徑中的擴展名,使用方式如下:
path.extname(p)
該方法使用一個參數,參數值必須為一個文件的完整路徑,可以為相對路徑也可以為絕對路徑。extname方法返回p參數值中指定文件的擴展名(以“.”開始),當p參數值中指定的文件沒有指定擴展名,將會返回一個空字符串。
console.log(path.extname('foo/index.html')); // .html
(8)path.sep屬性
屬性值為操作系統指定的文件分隔符,可能的屬性為“\\”(window操作系統中)或“/”(unix操作系統中)。
(9)path.delimiter屬性
屬性值為操作系統中指定的路徑分隔符,可能的屬性值為“;”(window操作系統中)或“:”(unix操作系統中)。