方法显示:

Fs.realpath()的同步版本。

Grammar:

复制代码代码如下所示:

Fs.realpathSync(路径缓存,{ })



由于此方法属于fs模块,因此需要在使用之前引入FS模块(var FS =需求(fs))。

接收参数:

路径

缓存是可选的。一个文本映射路径可用于强制一个特定的路径来解决或避免额外的fs.stat需要知道真实的路径对象。

实例uff1a

复制代码代码如下所示:

VaR FS =需要('fs);



表示当前的搜索路径。

var str = fs.realpathsync(' ');

console.log(STR);



源代码 uff1a

复制代码代码如下所示:

fs.realpathsync =功能realpathsync(P,缓存){

p是绝对的。

P = pathmodule.resolve(P);

如果(高速缓存(Cache object.prototype.hasownproperty.call,P)){

返回高速缓存{ };

}

原始值= P,

seenlinks = { },

knownhard = { };

字符当前位置

VaR的POS;

部分路径如此,包括一个尾随斜杠,如果有的话

无功电流;

部分路径没有拖尾斜杠(除了指向根)

VAR方法;

在前一轮中用斜杠扫描的部分路径。

var之前;

开始();

函数start(){

在根目录下跳过

var m = splitrootre.exec(P);

POS = 0 { }。长度;

当前= m { 0 };

基= m { 0 };

前=;

在windows上检查,根是存在的。在UNIX上是没有必要的。

如果(在Windows!knownhard {基}){

Fs.lstatSync(基地);

knownhard {基} =真;

}

}

下 / /行走路径交换链接pathparts他们真实

值

p.length变化。:

而(POS < p.length){

下一部分

nextpartre.lastindex = POS;

var result = nextpartre.exec(P);

前=当前;

当前结果= { 0 };

基础=前+结果{ 1 };

POS = nextpartre.lastindex;

如果没有一个符号 / /继续

如果(knownhard {基} | |(缓存{基} =基地)){

继续;

}

无功resolvedlink;

如果(高速缓存(Cache object.prototype.hasownproperty.call,基地)){

一些已知的符号链接。不需要再重新统计。

resolvedlink =缓存{基};

{ { { }

var属性= fs.lstatsync(基地);

如果(!Stat.isSymbolicLink()){

knownhard {基} =真;

如果(高速缓存)缓存;

继续;

}

阅读链接,如果它不是之前读过的

总是返回0 / / /伊诺开发Windows,所以跳过检查。

无功linktarget = null;

如果(!IsWindows){

var id = stat.dev.tostring(32)+:+ stat.ino.tostring(32);

如果(seenlinks.hasownproperty(ID)){

linktarget = seenlinks {id};

}

}

如果(util.isnull(linktarget)){

Fs.statSync(基地);

linktarget = fs.readlinksync(基地);

}

resolvedlink = pathmodule.resolve(以前,linktarget);

如果给定/跟踪这个缓存。

如果缓存(缓存){ } = resolvedlink基地;

如果(!IsWindows)seenlinks {id} = linktarget;

}

链接解析,然后重新开始

P = pathmodule.resolve(resolvedlink,p.slice(POS));

开始();

}

如果(缓存)缓存{原来的} = p;

返回p;

};