Метод Описание:
Синхронная версия fs.realpath ().
Грамматика:
Кода -копия выглядит следующим образом:
fs. -realpathsync (path, [cache])
Поскольку этот метод принадлежит модулю FS, необходимо ввести модуль FS перед использованием (var fs = require («fs»))))
Получить параметры:
Путь
Кэш, необязательно, можно использовать литеративный картушкий путь, чтобы заставить конкретный путь для разрешения или избежать дополнительных FS.Stat необходимо знать объект реального пути.
пример:
Кода -копия выглядит следующим образом:
var fs = require ('fs');
// точка указывает путь текущего файла
var str = fs. -realpathsync ('.');
console.log (str);
Исходный код:
Кода -копия выглядит следующим образом:
fs.realpathsync = function realpathsync (p, cache) {
// сделать p абсолютным
p = pathmodule.resolve (p);
if (cache && object.prototype.hashownproperty.call (cache, p)) {
вернуть кэш [p];
}
var Original = P,
seelinks = {},
nokehard = {};
// текущая позиция символа в p
var pos;
// до сих пор частичный путь, включая запекание, если таковые имеются
var ток;
// Частичный путь без зацепленной черты (за исключением случаев, когда указывает на корень)
вар база;
// Частичный путь отсканировал в предыдущем раунде, с помощью чернила
var предыдущий;
начинать();
функция start () {
// пропустить корни
var m = splitrootre.exec (p);
pos = m [0] .length;
current = m [0];
base = m [0];
предыдущий = '';
// В Windows убедитесь, что корень существует. На UNIX нет необходимости.
if (iswindows &&! nothingHard [base]) {
fs.lstatsync (base);
konedhard [base] = true;
}
}
// Пройти по пути, заменяя связанные пути на их настоящий
// ценности
// nb: p.length изменяется.
while (pos <p.length) {
// Найти следующую часть
NextPartre.lastIndex = POS;
var result = nextpartre.exec (p);
предыдущий = ток;
ток += результат [0];
base = предыдущий + результат [1];
pos = nextpartre.lastindex;
// продолжить, если не символически
if (insownhard [base] || (cache && cache [base] === base)) {
продолжать;
}
var ResolvedLink;
if (cache && object.prototype.hashownproperty.call (cache, base)) {
// Некоторая известная символическая ссылка. Нет необходимости снова.
ResolvedLink = cache [Base];
} еще {
var stat = fs.lstatsync (base);
if (! stat.issymboliclink ()) {
konedhard [base] = true;
if (cache) cache [base] = base;
продолжать;
}
// Прочитайте ссылку, если она не была прочткой раньше
// dev/ino всегда возвращайте 0 в Windows, так что пропустите чек.
var linktarget = null;
if (! Iswindows) {
var id = stat.dev.toString (32) + ':' + stat.ino.toString (32);
if (seelinks.hashownproperty (id)) {
linktarget = seelinks [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;
};