ホームページ >ウェブフロントエンド >jsチュートリアル >node.js_node.js で fs.realpathSync メソッドを使用する手順

node.js_node.js で fs.realpathSync メソッドを使用する手順

WBOY
WBOYオリジナル
2016-05-16 16:26:382283ブラウズ

メソッドの説明:

fs.realpath() の同期バージョン。

文法:

コードをコピーします コードは次のとおりです:

fs.realpathSync(パス, [キャッシュ])

このメソッドは fs モジュールに属しているため、使用する前に fs モジュールを導入する必要があります (var fs= require(“fs”) )

パラメータを受信します:

パス パス

キャッシュ‐ ‐ ‐ ‐ ‐ ‐ オプションで、リテラルのマップされたパスを使用して、特定のパスを強制的に解決したり、実際のパス オブジェクトを知るための追加の fs.stat の必要性を回避したりできます。

例:

コードをコピーします コードは次のとおりです:

var fs = require('fs');

// ドットは現在のファイルのパスを示します
var str = fs.realpathSync('.');
console.log(str);

ソースコード:

コードをコピー コードは次のとおりです:

fs.realpathSync = 関数 realpathSync(p, キャッシュ) {
  // p を絶対値にする
  p = pathModule.resolve(p);
  if (キャッシュ && Object.prototype.hasOwnProperty.call(cache, p)) {
    キャッシュを返す[p];
  }
  var オリジナル = p,
      見られたリンク = {},
      既知ハード = {};
  // p
内の現在の文字位置   var pos;
  // これまでの部分パス(末尾のスラッシュがあればそれも含む)
  var current;
  // 末尾のスラッシュのない部分パス (ルートを指す場合を除く)
  var ベース;
  // 前のラウンドでスキャンされた部分パス、スラッシュ
  var 前;
  start();
  関数 start() {
    // ルートをスキップ
    var m = splitRootRe.exec(p);
    pos = m[0].length;
    現在 = m[0];
    ベース = m[0];
    前 = '';
    // Windows では、ルートが存在することを確認します。 UNIX では必要ありません。
    if (isWindows && !knownHard[base]) {
      fs.lstatSync(base);
      knownHard[base] = true;
    }
  }
  // パスをたどって、リンクされたパスパーツを実際のパスパーツと交換します
  // 値
  // 注意: p.length は変更されます。
  while (pos     // 次の部分を見つけます
    nextPartRe.lastIndex = pos;
    var result = nextPartRe.exec(p);
    前 = 現在;
    現在 = 結果[0];
    ベース = 前の結果[1];
    pos = nextPartRe.lastIndex;
    // シンボリックリンクでない場合は続行
    if (knownHard[base] || (キャッシュ && キャッシュ[ベース] === ベース)) {
      続行;
    }
    varresolvedLink;
    if (キャッシュ && Object.prototype.hasOwnProperty.call(キャッシュ, ベース)) {
      // 既知のシンボリック リンク。再度統計を行う必要はありません。
      解決済みリンク = キャッシュ[ベース];
    } else {
      var stat = fs.lstatSync(base);
      if (!stat.isSymbolicLink()) {
        knownHard[base] = true;
        if (キャッシュ) キャッシュ[ベース] = ベース;
        続行;
      }
      // まだ読まれていない場合はリンクを読みます
      // Windows では dev/ino は常に 0 を返すため、チェックをスキップします。
      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);
      }
      solvedLink = pathModule.resolve(previous, linkTarget);
      // キャッシュが与えられている場合、これを追跡します。
      if (キャッシュ) キャッシュ[ベース] =solvedLink;
      if (!isWindows) seenLinks[id] = linkTarget;
    }
    // リンクを解決してからやり直します
    p = pathModule.resolve(resolvedLink, p.slice(pos));
    start();
  }
  if (キャッシュ) キャッシュ[オリジナル] = p;
  p を返します;
};
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。