Rumah  >  Artikel  >  hujung hadapan web  >  Arahan untuk menggunakan kaedah fs.realpathSync dalam node.js_node.js

Arahan untuk menggunakan kaedah fs.realpathSync dalam node.js_node.js

WBOY
WBOYasal
2016-05-16 16:26:382216semak imbas

Penerangan kaedah:

Versi disegerakkan fs.realpath() .

Tatabahasa:

Salin kod Kod adalah seperti berikut:

fs.realpathSync(laluan, [cache])

Memandangkan kaedah ini tergolong dalam modul fs, modul fs perlu diperkenalkan sebelum digunakan (var fs= require(“fs”) )

Terima parameter:

Laluan laluan

cache                                                                                                                                                                                                                                           ’ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ ‐ Secara pilihan, laluan yang dipetakan secara literal boleh digunakan untuk memaksa laluan tertentu diselesaikan atau untuk mengelakkan keperluan untuk mengetahui laluan fs.stat tambahan.

Contoh:

Salin kod Kod adalah seperti berikut:

var fs = memerlukan('fs');

// Titik menunjukkan laluan fail semasa
var str = fs.realpathSync('.');
console.log(str);

Kod sumber:

Salin kod Kod adalah seperti berikut:

fs.realpathSync = fungsi realpathSync(p, cache) {
  // jadikan p adalah mutlak
  p = pathModule.resolve(p);
  if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
    kembalikan cache[p];
  }
  var asal = p,
      seenLinks = {},
      dikenali Keras = {};
  // kedudukan aksara semasa dalam p
  var pos;
  // laluan separa setakat ini, termasuk garis miring mengekor jika ada
  var semasa;
  // laluan separa tanpa garis miring mengekor (kecuali apabila menunjuk pada akar)
  asas var;
  // laluan separa yang diimbas dalam pusingan sebelumnya, dengan garis miring
  var sebelumnya;
  mula ();
  fungsi mula() {
    // Langkau ke atas akar
    var m = splitRootRe.exec(p);
    pos = m[0].panjang;
    semasa = m[0];
    asas = m[0];
    sebelumnya = '';
    // Pada tingkap, semak sama ada akarnya wujud. Pada unix tidak perlu.
    if (isWindows && !knownHard[base]) {
      fs.lstatSync(asas);
      dikenaliKeras[asas] = benar;
    }
  }
  // berjalan di laluan itu, menukar bahagian laluan yang dipautkan dengan
sebenar mereka   // nilai
  // NB: p.panjang berubah.
  manakala (pos < p.panjang) {
    // cari bahagian seterusnya
    nextPartRe.lastIndex = pos;
    var result = nextPartRe.exec(p);
    sebelumnya = semasa;
    semasa = hasil[0];
    asas = hasil sebelumnya[1];
    pos = nextPartRe.lastIndex;
    // teruskan jika bukan symlink
    if (knownHard[base] || (cache && cache[base] === base)) {
      teruskan;
    }
    var resolvedLink;
    if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
      // beberapa pautan simbolik yang diketahui. tak perlu stat lagi.
      resolvedLink = cache[base];
    } lain {
      var stat = fs.lstatSync(base);
      jika (!stat.isSymbolicLink()) {
        dikenaliKeras[asas] = benar;
        jika (cache) cache[base] = base;
        teruskan;
      }
      // baca pautan jika ia tidak dibaca sebelum ini
      // dev/ino sentiasa mengembalikan 0 pada tingkap, jadi langkau semak itu.
      var linkTarget = null;
      jika (!isWindows) {
        var id = stat.dev.toString(32) ':' stat.ino.toString(32);
        jika (seenLinks.hasOwnProperty(id)) {
          linkTarget = seenLinks[id];
        }
      }
      if (util.isNull(linkTarget)) {
        fs.statSync(asas);
        linkTarget = fs.readlinkSync(base);
      }
      resolvedLink = pathModule.resolve(sebelumnya, linkTarget);
      // jejak ini, jika diberi cache.
      jika (cache) cache[base] = solvedLink;
      jika (!isWindows) dilihatPautan[id] = linkTarget;
    }
    // selesaikan pautan, kemudian mulakan semula
    p = pathModule.resolve(resolvedLink, p.slice(pos));
    mula ();
  }
  jika (cache) cache[asal] = p;
  pulangkan p;
};
Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn