>  기사  >  웹 프론트엔드  >  node.js_node.js에서 fs.realpathSync 메서드를 사용하기 위한 지침

node.js_node.js에서 fs.realpathSync 메서드를 사용하기 위한 지침

WBOY
WBOY원래의
2016-05-16 16:26:382216검색

방법 설명:

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 (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
    캐시 반환[p];
  }
  var 원본 = p,
      seeLinks = {},
      KnownHard = {};
  // p의 현재 문자 위치
  var pos;
  // 지금까지의 부분 경로(있는 경우 후행 슬래시 포함)
  var 전류;
  // 후행 슬래시가 없는 부분 경로(루트를 가리키는 경우 제외)
  var 베이스;
  // 이전 라운드에서 스캔한 부분 경로(슬래시 포함)
  var 이전;
  시작();
  함수 시작() {
    // 루트 건너뛰기
    var m = SplitRootRe.exec(p);
    위치 = m[0].length;
    전류 = m[0];
    기본 = m[0];
    이전 = '';
    // Windows에서는 루트가 존재하는지 확인합니다. 유닉스에서는 필요하지 않습니다.
    if (isWindows && !knownHard[base]) {
      fs.lstatSync(기본);
      알려진 하드[베이스] = true;
    }
  }
  // 경로를 따라 걸어가면서 연결된 경로 부분을 실제 경로 부분으로 교체합니다
  // 값
  // 주의: p.length가 변경됩니다.
  while (pos < p.length) {
    // 다음 부분 찾기
    nextPartRe.lastIndex = pos;
    var 결과 = nextPartRe.exec(p);
    이전 = 현재;
    현재 = 결과[0];
    기본 = 이전 결과[1];
    pos = nextPartRe.lastIndex;
    // 심볼릭 링크가 아닌 경우 계속
    if (knownHard[base] || (cache && 캐시[base] === base)) {
      계속;
    }
    var 해결Link;
    if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
      // 알려진 심볼릭 링크. 다시 통계를 낼 필요가 없습니다.
      해결링크 = 캐시[베이스];
    } 그 밖의 {
      var stat = fs.lstatSync(base);
      if (!stat.isSymbolicLink()) {
        알려진 하드[베이스] = true;
        if (캐시) 캐시[베이스] = 베이스;
        계속;
      }
      // 이전에 읽지 않았다면 링크를 읽습니다
      // dev/ino는 Windows에서 항상 0을 반환하므로 확인을 건너뜁니다.
      var linkTarget = null;
      if (!isWindows) {
        var id = stat.dev.toString(32) ':' stat.ino.toString(32);
        if (seenLinks.hasOwnProperty(id)) {
          linkTarget = seeLinks[id];
        }
      }
      if (util.isNull(linkTarget)) {
        fs.statSync(기본);
        linkTarget = fs.readlinkSync(base);
      }
      해결링크 = pathModule.resolve(이전, linkTarget);
      // 캐시가 제공되면 이를 추적합니다.
      if (캐시) 캐시[베이스] = 해결링크;
      if (!isWindows) seeLinks[id] = linkTarget;
    }
    // 링크를 해결한 후 다시 시작하세요
    p = pathModule.resolve(resolvedLink, p.slice(pos));
    시작();
  }
  if (캐시) 캐시[원본] = p;
  반환 p;
};
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.