Methodenbeschreibung:
Synchronisierte Version von fs.realpath() .
Grammatik:
fs.realpathSync(path, [cache])
Da diese Methode zum fs-Modul gehört, muss das fs-Modul vor der Verwendung eingeführt werden (var fs= require(“fs“))
Empfangsparameter:
Pfad Pfad
Cache optional, der Zuordnungspfad eines Textes kann verwendet werden, um die Lösung eines bestimmten Pfads zu erzwingen oder zusätzliche fs.stat-Anforderungen zu vermeiden, um den tatsächlichen Pfad des Objekts zu kennen.
Beispiel:
var fs = require('fs');
// Der Punkt gibt den Pfad der aktuellen Datei an
var str = fs.realpathSync('.');
console.log(str);
Quellcode:
fs.realpathSync = Funktion realpathSync(p, Cache) {
// mache p absolut
p = pathModule.resolve(p);
if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
Cache zurückgeben[p];
}
var original = p,
seenLinks = {},
knownHard = {};
// aktuelle Zeichenposition in p
var pos;
// der bisherige Teilpfad, einschließlich eines abschließenden Schrägstrichs, falls vorhanden
var current;
// der Teilpfad ohne abschließenden Schrägstrich (außer beim Zeigen auf eine Wurzel)
var base;
// der Teilpfad, der in der vorherigen Runde gescannt wurde, mit Schrägstrich
var previous;
start();
Funktion start() {
// Wurzeln überspringen
var m = splitRootRe.exec(p);
pos = m[0].length;
aktuell = m[0];
Basis = m[0];
vorherige = '';
// Überprüfen Sie unter Windows, ob der Root vorhanden ist. Unter Unix besteht keine Notwendigkeit.
if (isWindows && !knownHard[base]) {
fs.lstatSync(base);
knownHard[base] = true;
}
}
// Gehe den Pfad entlang und tausche verknüpfte Pfadteile gegen ihre echten aus
// Werte
// NB: p.length ändert sich.
while (pos < p.length) {
// den nächsten Teil finden
nextPartRe.lastIndex = pos;
var result = nextPartRe.exec(p);
vorherige = aktuell;
current = result[0];
Basis = vorheriges Ergebnis[1];
pos = nextPartRe.lastIndex;
// fortfahren, wenn kein Symlink
if (knownHard[base] || (cache && Cache[base] === base)) {
weiter;
}
var gelöstLink;
if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
// ein bekannter symbolischer Link. Keine Notwendigkeit, es noch einmal zu sagen.
gelöstLink = Cache[Basis];
} sonst {
var stat = fs.lstatSync(base);
if (!stat.isSymbolicLink()) {
knownHard[base] = true;
if (cache) Cache[base] = base;
weiter;
}
// Den Link lesen, falls er noch nicht gelesen wurde
// dev/ino gibt unter Windows immer 0 zurück, also überspringe die Prüfung.
var linkTarget = null;
if (!isWindows) {
var id = stat.dev.toString(32) ':' stat.ino.toString(32);
if (seenLinks.hasOwnProperty(id)) {
linkTarget = seenLinks[id];
}
}
if (util.isNull(linkTarget)) {
fs.statSync(base);
linkTarget = fs.readlinkSync(base);
}
gelöstLink = pathModule.resolve( previous, linkTarget);
// Verfolgen Sie dies, wenn ein Cache vorhanden ist.
if (cache) zwischenspeicher[base] = gelöstLink;
if (!isWindows) seenLinks[id] = linkTarget;
}
// Den Link auflösen und dann von vorne beginnen
p = pathModule.resolve(resolvedLink, p.slice(pos));
start();
}
if (cache) zwischenspeicher[original] = p;
return p;
};
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn