node.js中的fs.realpathSync方法使用说明

 更新时间:2014年12月16日 09:26:30   投稿:junjie  
这篇文章主要介绍了node.js中的fs.realpathSync方法使用说明,本文介绍了fs.realpathSync的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下

方法说明:

同步版的 fs.realpath()

语法:

复制代码 代码如下:

fs.realpathSync(path, [cache])

由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) )

接收参数:

path                             路径

cache                           可选,一个文字的映射路径可用于强制一个特定的路径解决或避免额外的fs.stat需要知道真正的路径对象。

例子:

复制代码 代码如下:

var fs = require('fs');
 
// 点号表示当前文件所在路径
var str = fs.realpathSync('.');
console.log(str);

源码:

复制代码 代码如下:

fs.realpathSync = function realpathSync(p, cache) {
  // make p is absolute
  p = pathModule.resolve(p);
  if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
    return cache[p];
  }
  var original = p,
      seenLinks = {},
      knownHard = {};
  // current character position in p
  var pos;
  // the partial path so far, including a trailing slash if any
  var current;
  // the partial path without a trailing slash (except when pointing at a root)
  var base;
  // the partial path scanned in the previous round, with slash
  var previous;
  start();
  function start() {
    // Skip over roots
    var m = splitRootRe.exec(p);
    pos = m[0].length;
    current = m[0];
    base = m[0];
    previous = '';
    // On windows, check that the root exists. On unix there is no need.
    if (isWindows && !knownHard[base]) {
      fs.lstatSync(base);
      knownHard[base] = true;
    }
  }
  // walk down the path, swapping out linked pathparts for their real
  // values
  // NB: p.length changes.
  while (pos < p.length) {
    // find the next part
    nextPartRe.lastIndex = pos;
    var result = nextPartRe.exec(p);
    previous = current;
    current += result[0];
    base = previous + result[1];
    pos = nextPartRe.lastIndex;
    // continue if not a symlink
    if (knownHard[base] || (cache && cache[base] === base)) {
      continue;
    }
    var resolvedLink;
    if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
      // some known symbolic link. no need to stat again.
      resolvedLink = cache[base];
    } else {
      var stat = fs.lstatSync(base);
      if (!stat.isSymbolicLink()) {
        knownHard[base] = true;
        if (cache) cache[base] = base;
        continue;
      }
      // read the link if it wasn't read before
      // dev/ino always return 0 on windows, so skip the check.
      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);
      }
      resolvedLink = pathModule.resolve(previous, linkTarget);
      // track this, if given a cache.
      if (cache) cache[base] = resolvedLink;
      if (!isWindows) seenLinks[id] = linkTarget;
    }
    // resolve the link, then start over
    p = pathModule.resolve(resolvedLink, p.slice(pos));
    start();
  }
  if (cache) cache[original] = p;
  return p;
};

相关文章

  • node.js中的fs.read方法使用说明

    node.js中的fs.read方法使用说明

    这篇文章主要介绍了node.js中的fs.read方法使用说明,本文介绍了fs.read方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • 前端+nodejs+mysql实现前后端联通的完整代码

    前端+nodejs+mysql实现前后端联通的完整代码

    Node.js主要属于后端技术,但也可以用于前端开发的某些场景,下面这篇文章主要介绍了前端+nodejs+mysql实现前后端联通的完整代码,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-04-04
  • 浅谈node.js 命令行工具(cli)

    浅谈node.js 命令行工具(cli)

    nodejs开发命令行工具,流程相对简单,但一套完整的命令行程序开发流程下来,还是需要下点功夫,这篇文章主要介绍了浅谈node.js 命令行工具(cli),感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 三行命令切换Node.js版本的流程步骤

    三行命令切换Node.js版本的流程步骤

    如何在Windows上更新Node.js版本呢?有没有那种不需要重新安装软件再修改配置文件和环境变量的方法?你是否还在为可能要重新安装Node然后配置文件修改环境变量困扰?面就来介绍一下nvm更换node版本的步骤,需要的朋友可以参考下
    2024-01-01
  • NodeJS如何优雅的实现Sleep休眠

    NodeJS如何优雅的实现Sleep休眠

    这篇文章主要介绍了NodeJS如何优雅的实现Sleep休眠问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • Nodejs中Express 常用中间件 body-parser 实现解析

    Nodejs中Express 常用中间件 body-parser 实现解析

    这篇文章主要介绍了Nodejs中Express 常用中间件 body-parser 实现解析,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • NodeJs环境安装与配置的实现步骤

    NodeJs环境安装与配置的实现步骤

    本文主要介绍了NodeJs环境安装与配置,包括配置环境和配置国内镜像,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • 了不起的node.js读书笔记之例程分析

    了不起的node.js读书笔记之例程分析

    这篇文章主要介绍了了不起的node.js读书笔记之例程分析,需要的朋友可以参考下
    2014-12-12
  • node.js中的emitter.on方法使用说明

    node.js中的emitter.on方法使用说明

    这篇文章主要介绍了node.js中的emitter.on方法使用说明,本文介绍了emitter.on的方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • nodejs中内置模块fs,path常见的用法说明

    nodejs中内置模块fs,path常见的用法说明

    这篇文章主要介绍了nodejs中内置模块fs,path常见的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11

最新评论