Node.Js Path模組-檔案或資料夾路徑字串操作
阿新 • • 發佈:2019-01-26
require('path')模組
該模組包含用於處理和轉換檔案路徑的實用程式。幾乎所有這些方法只執行字串轉換。沒有協商檔案系統以檢查路徑是否有效。
一、路徑格式化、反格式化1.path.parse(pathString);
將路徑字串轉換成物件
var path=require('path'); //path.parse(pathString); //將路徑字串轉換成物件 //傳入的路徑當檔案路徑處理,name返回的是檔名或最後資料夾名 var obj1=path.parse('/home/user/dir/file.txt'); console.info(obj1); { root: '/', //根目錄 dir: '/home/user/dir', //檔案所在目錄 base: 'file.txt', //檔名 ext: '.txt', //副檔名 name: 'file' //檔名稱,不含副檔名 } var obj2=path.parse('C:\\path\\dir\\index.html'); console.info(obj2); { root: 'C:\\', dir: 'C:\\path\\dir', base: 'index.html', ext: '.html', name: 'index' } var ojb3=path.parse('C:\\path\\dir\\'); console.info(ojb3); { root: 'C:\\', dir: 'C:\\path', base: 'dir', ext: '', name: 'dir' }
2.path.format(pathObject)
將object物件序列化成字串
var path=require('path'); //path.format(pathObject) //將object物件序列化成字串 // 結果證明 轉換的時候,重點指定 目錄dir 和 base檔名 var url1=path.format({ dir:'/home/user/dir', base:'file.txt' }); var url2=path.format({ root:'f:\\', base:'file.txt' }); var url3=path.format({ root:'f:', dir:'f:\\dir1\\dir2', name:'file', ext:'.txt' }); var url4=path.format({ base:'file.txt' }); var url5=path.format({ root:'f:', dir:'f:\\dir1\\dir2', base:'file.txt' }); console.log('url1:',url1); // /home/user/dir\file.txt console.log('url2:',url2); // file.txt console.log('url3:',url3); // f:\dir1\dir2\ console.log('url4:',url4); // file.txt console.log('url5:',url5); // f:\dir1\dir2\file.txt
二、跨平臺標準化
1.path.normalize(p)
標準化路徑字串,處理冗餘的“ .. ”、“ . ”、“ / ”字元
var path=require('path'); //path.normalize(p) 標準化路徑字串,處理冗餘的“ .. ”、“ . ”、“ / ”字元 //如果在win下,返回 dir1\dir2格式 //如果在unix下,返回 dir1/dir2格式 var url1 = path.normalize('a/b/c/../user/vajoy/bin'); var url2 = path.normalize('a/b/c///../user/vajoy/bin/'); var url3 = path.normalize('./a/.././user/vajoy/bin/./'); console.info(url1); console.info(url2); console.info(url3);
2. path.join([path1], [path2], [...])
將多個路徑結合在一起,並轉換為標準化的路徑
var path=require('path');
//path.join([path1], [path2], [...])
//將多個路徑結合在一起,並轉換為標準化的路徑
//陣列想中有 /或\ 才是有效目錄項
//返回結果 已經進行了標準化處理 (path.normalize)
var url1 = path.join('////./a', 'b////c', 'user/', 'vajoy', '..');
var url2 = path.join('a', '../../', 'user/', 'vajoy', '..');
var url4=path.join('c:\\one','\\abc\\','/dir/file.txt');
//var url3 = path.join('a', '../../', {}, 'vajoy', '..');
console.log('url1:',url1); // \a\b\c\user
console.log('url2:',url2); // ..\user
console.log('url4:',url4); // c:\one\abc\dir\file.txt
//console.log('url3:',url3); // 存在非路徑字串,故丟擲異常
3.path.sep
返回對應平臺下的資料夾分隔符,win下為'\',*nix下為'/'
var path=require('path');
//path.sep
//返回對應平臺下的資料夾分隔符,win下為'\',*nix下為'/'
var url1 = path.sep;
var url2 = 'foo\\bar\\baz'.split(path.sep);
var url3 = 'foo/bar/baz'.split(path.sep);
console.log('url1:',url1); // win下為\,*nix下為/
console.log('url2:',url2); // [ 'foo', 'bar', 'baz' ]
console.log('url3:',url3); // win下返回[ 'foo/bar/baz' ],但在*nix系統下會返回[ 'foo', 'bar', 'baz' ]
4.path.delimiter
返回對應平臺下的路徑分隔符,win下為';',*nix下為':'
var path=require('path');
//path.delimiter
//返回對應平臺下的路徑分隔符,win下為';',*nix下為':'
var env = process.env.PATH; //當前系統的環境變數PATH
var url1 = env.split(path.delimiter);
console.log('路徑分隔符:',path.delimiter); //win下為“;”,*nix下為“:”
console.log('env:',env); // C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;
console.log('url1:',url1); // ['C:\ProgramData\Oracle\Java\javapath','C:\Program Files (x86)\Intel\iCLS Client\']
三、絕對路徑、相對路徑處理
1.path.isAbsolute(path)
判斷是否是絕對路徑,比如 'E:/abc',或者是以“/”開頭的路徑,二者都會返回true
var path=require('path');
//path.isAbsolute(path)
//判斷是否是絕對路徑
//比如 'E:/abc',或者是以“/”開頭的路徑,二者都會返回true
var url1 = path.isAbsolute('../testFiles/secLayer');
var url2 = path.isAbsolute('./join.js');
var url3 = path.isAbsolute('temp');
var url4 = path.isAbsolute('/temp/../..');
var url5 = path.isAbsolute('E:/github/nodeAPI/abc/efg');
var url6 = path.isAbsolute('///temp123');
console.log('url1:',url1); // false
console.log('url2:',url2); // false
console.log('url3:',url3); // false
console.log('url4:',url4); // true
console.log('url5:',url5); // true
console.log('url6:',url6); // true
2.path.relative(from,to)
獲取從 from 到 to 的相對路徑
var path=require('path');
//path.relative(from,to)
//獲取從 from 到 to 的相對路徑
//如果跨越磁碟符,則直接返回to的字串
var path = require('path');
var url1 = path.relative('C:\\vajoy\\test\\aaa', 'C:\\vajoy\\impl\\bbb');
var url2 = path.relative('C:/vajoy/test/aaa', 'C:/vajoy/bbb');
var url3 = path.relative('C:/vajoy/test/aaa', 'D:/vajoy/bbb');
console.log('url1:',url1); //..\..\impl\bbb
console.log('url2:',url2); //url2: ..\..\bbb
console.log('url3:',url3); //D:\vajoy\bbb
3.path.resolve([from ...], to)
從源地址 from 到目的地址 to 的絕對路徑。既是使用cd命令的最後的絕對目錄
var path=require('path');
//path.resolve([from ...], to)
//從源地址 from 到目的地址 to 的絕對路徑。
//從當前執行js檔案的目錄算起,計算相對路徑的絕對路徑
//如果指定內容跨越磁碟符,返回cd最後開啟的絕對路徑
var url1 = path.resolve('.', 'testFiles/..', 'trdLayer');
var url2=path.resolve('../../');
var url3=path.resolve('../','e:\\mywork','f:\\test1');
console.info(url1);
console.info(url2);
console.info(url3);
四、目錄,資料夾、檔名獲取
1.path.dirname(p)
返回指定uri字串中資料夾的路徑,如果當前為目錄,則返回上一級目錄
var path=require('path');
//path.dirname(p)
//返回指定uri字串中資料夾的路徑
//如果當前為目錄,則返回上一級目錄
//對於Url格式的指定解析無效
var url1 = path.dirname('/foo/bar/baz/asdf/a.txt');
var url2 = path.dirname('/foo/bar/baz/asdf/');
var url3 = path.dirname('C:/vajoy/test/aaa');
var url4=path.dirname('http://www.gongjuji.net/byte');
console.log('url1:',url1); // /foo/bar/baz/asdf
console.log('url2:',url2); // /foo/bar/baz
console.log('url3:',url3); // C:/vajoy/test
console.log('url4:',url4); // http://www.gongjuji.net
2.path.basename(p,[ext])
返回路徑中的最後一部分,類似於Unix 的 basename 命令。 ext 為需要截掉的尾綴內容
var path=require('path');
//path.basename(p,[ext])
// 返回路徑中的最後一部分,類似於Unix 的 basename 命令。
// ext 為需要截掉的尾綴內容
// 如果指定檔案路徑,返回檔名
// 如果指定目錄。返回最內層資料夾名
var url1 = path.basename('/foo/bar/baz/asdf/a.txt');
var url2 = path.basename('/foo/bar/baz/asdf/a.txt','.txt');
var url3 = path.basename('/foo/bar/baz/asdf/');
var url4 = path.basename('C:/vajoy/test/aaa');
console.log('url1:',url1); // a.txt
console.log('url2:',url2); // a
console.log('url3:',url3); // asdf
console.log('url4:',url4); // aaa
3.path.extname(p)
返回路徑檔案的副檔名(若存在)
var path=require('path');
//path.extname(p)
//返回路徑檔案的副檔名(若存在)
var url1 = path.extname('/foo/bar/baz/asdf/a.txt');
var url2 = path.extname('/foo/bar/baz/asdf/a.txt.html');
var url3 = path.extname('/foo/bar/baz/asdf/a.');
var url4 = path.extname('C:/vajoy/test/.');
var url5 = path.extname('C:/vajoy/test/a');
console.log('url1:',url1); // .txt
console.log('url2:',url2); // .html
console.log('url3:',url3); // .
console.log('url4:',url4); //
console.log('url5:',url5); //