源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-12-07 09:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:node.js中的fs.realpathSync方法使用说明
[b]方法说明:[/b] 同步版的 [url=http://www.1sucai.cn/article/58550.htm]fs.realpath() [/url]。 [b]语法:[/b]
[u]复制代码[/u] 代码如下:
fs.realpathSync(path, [cache])
由于该方法属于fs模块,使用前需要引入fs模块(var fs= require(“fs”) ) [b]接收参数:[/b] path                             路径 cache                           可选,一个文字的映射路径可用于强制一个特定的路径解决或避免额外的fs.stat需要知道真正的路径对象。 [b]例子:[/b]
[u]复制代码[/u] 代码如下:
var fs = require('fs');   // 点号表示当前文件所在路径 var str = fs.realpathSync('.'); console.log(str);
[b]源码:[/b]
[u]复制代码[/u] 代码如下:
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; };
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部