メソッド説明:
fs.realpath()の同期バージョン。
文法:
コードコピーは次のとおりです。
fs.realpathsync(path、[cache])
この方法はFSモジュールに属しているため、使用前にFSモジュールを導入する必要があります(var fs = require( "fs"))
パラメーターを受信:
パスパス
キャッシュオプションでは、文字通りマッピングされたパスを使用して、特定のパスを強制して追加のfstatを解決または回避する必要があります。
例:
コードコピーは次のとおりです。
var fs = require( 'fs');
//ドットは現在のファイルのパスを示します
var str = fs.realpathsync( '。');
console.log(str);
ソースコード:
コードコピーは次のとおりです。
fs.realpathsync = function realpathsync(p、cache){
// make pは絶対です
p = pathmodule.resolve(p);
if(cache && object.prototype.hasownproperty.call(cache、p)){
キャッシュを返す[P];
}
var original = p、
seelinks = {}、
既知のハード= {};
// pの現在の文字位置
var pos;
//これまでの部分的なパスは、存在する場合のトレイリングスラッシュを含む
var電流;
//トレーリングスラッシュのない部分的なパス(ルートを指すときを除く)
var Base;
//前のラウンドでスキャンされた部分的なパス、スラッシュで
var previous;
始める();
function start(){
//根をスキップします
var m = splitrootre.exec(p);
pos = m [0] .length;
current = m [0];
base = m [0];
前= '';
// Windowsで、ルートが存在することを確認します。 Unixには必要ありません。
if(iswindows &&!nownhard [base]){
fs.lstatsync(base);
既知のハード[base] = true;
}
}
//パスを歩いて、リンクされたパスパートをリアルに交換します
//値
// nb:p.lengthの変更。
while(pos <p.length){
//次の部分を見つけます
nextpartre.lastindex = pos;
var result = nextpartre.exec(p);
前= current;
current += result [0];
base =前 + result [1];
pos = nextpartre.lastindex;
// Symlinkではない場合は続行します
if(incoundhard [base] ||(cache && cache [base] === base)){
続く;
}
var ResolvedLink;
if(cache && object.prototype.hasownproperty.call(cache、base)){
//いくつかの既知のシンボリックリンク。二度と統計する必要はありません。
ResolvedLink = cache [base];
} それ以外 {
var stat = fs.lstatsync(base);
if(!stat.issymboliclink()){
既知のハード[base] = true;
if(cache)cache [base] = base;
続く;
}
//以前に読まなかった場合はリンクを読み取ります
// dev/inoは常にWindowsで0を返しますので、チェックをスキップします。
var linktarget = null;
if(!iswindows){
var id = stat.dev.tostring(32) + ':' + stat.ino.tostring(32);
if(shouslinks.hasownproperty(id)){
linktarget = shouslinks [id];
}
}
if(util.isnull(linktarget)){
fs.statsync(base);
linktarget = fs.readLinksync(base);
}
ResolvedLink = pathModule.Resolve(前、linktarget);
//キャッシュが与えられた場合、これを追跡します。
if(cache)cache [base] = ResolvedLink;
if(!iswindows)seelinks [id] = linktarget;
}
//リンクを解決してから、やり直します
p = pathModule.Resolve(ResolvedLink、P.Slice(POS));
始める();
}
if(cache)cache [original] = p;
pを返します。
};