node.js中的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;
};

(0)

相关推荐

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

    方法说明: 同步版的 lstat() . 方法返回一个stat数组对象,包含以下信息:(以下信息为案例中读取的文件信息,非默认值) 复制代码 代码如下: {    dev : 0 ,    mode : 33206 ,    nlink : 1 ,    uid : 0 ,    gid : 0 ,    rdev : 0 ,    ino : 0 ,    size : 378(字节) ,    atime : Tue Jun 10 2014 13:57:13 GMT +0800 <中国标准时

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

    方法说明: 同步版的 unlink() ,删除文件操作. 语法: 复制代码 代码如下: fs.unlinkSync(path) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path           文件路径 例子: 复制代码 代码如下: var fs = require('fs'); var filepath = '126.txt'; fs.unlinkSync(filepath); 源码: 复制代码 代码如下: fs

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

    方法说明: 同步版的 fs.link() . 语法: 复制代码 代码如下: fs.linkSync(srcpath, dstpath) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: srcpath        为源目录或文件的路径 dstpath       它是存放转换后的目录的路径,默认为当前工作目录 源码: 复制代码 代码如下: fs.linkSync = function(srcpath, dstpath) {  

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

    方法说明: 同步版的 fs.readFile() . 语法: 复制代码 代码如下: fs.readFileSync(filename, [encoding]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: filename    文件路径 options      option对象,包含 encoding,编码格式,该项是可选的. 例子: 复制代码 代码如下: var fs = require('fs');   var co

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

    方法说明: 异步方式修改文件时间戳. 语法: 复制代码 代码如下: fs.utimes(path, atime, mtime, callback) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path           文件路径 mtime        修改时间 ,表示文件被修改的时间和日期.文件的内容发生改变时,文件的修改日期将随之更新 atime         访问时间 ,表示文件最后被访问的时间和日期. 每一次

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

    方法说明: 创建符号链接. 语法: 复制代码 代码如下: fs.symlink(srcpath, dstpath, [type], [callback(err)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: srcpath                 为源目录或文件的路径 dstpath                它是存放转换后的目录的路径,默认为当前工作目录 type                     

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

    方法说明: 同步版的 fs.realpath(). 语法: 复制代码 代码如下: fs.realpathSync(path, [cache]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path                             路径 cache                           可选,一个文字的映射路径可用于强制一个特定的路径解决或避免额外的fs.stat需要知道真正的路径对象.

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

    方法说明: 根据文件描述符获取文件信息. 语法: 复制代码 代码如下: fs.fstat(fd, [callback(err, stats)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: fd                 文件描述符 callback       回调,传递2个参数,异常参数err 和 文件信息参数 stats stats包含以下信息:(以下信息为案例中读取的文件信息,非默认值) 复制代码 代码如下:

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

    方法说明: 同步版的 fstat() . 方法返回一个stat数组对象,包含以下信息:(以下信息为案例中读取的文件信息,非默认值) 复制代码 代码如下: {    dev : 0 ,    mode : 33206 ,    nlink : 1 ,    uid : 0 ,    gid : 0 ,    rdev : 0 ,    ino : 0 ,    size : 378(字节) ,    atime : Tue Jun 10 2014 13:57:13 GMT +0800 <中国标准时

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

    方法说明: 同步版的fs.writeFile() . 语法: 复制代码 代码如下: fs.writeFileSync(filename, data, [options]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: filename      (String)            文件名称 data        (String | Buffer)    将要写入的内容,可以使字符串 或 buffer数据. option

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

    方法说明: 写入文件(根据文件描述符),功能与 fs.writeFile() 类似,但该方法提供更底层的操作,实际应用中建议使用多 fs.writeFile()  . 该方法有两种形式: 1.fs.write(fd, buffer, offset, length[, position], [callback(err, bytesWritten, buffer)]) 这种写法将buffer写入文件(根据文件描述符fd来查找文件). 2.fs.write(fd, data[, position[,

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

    方法说明: 以异步的方式将data写入文件,文件已存在的情况下,原内容将被替换. 语法: 复制代码 代码如下: fs.writeFile(filename, data, [options], [callback(err)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: filename      (String)            文件名称 data        (String | Buffer)    将要写入的内

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

    方法说明: 以异步的方式打开文件. 在POSIX系统中,path被认为是默认存在的(即使该路径下的文件是不存在的) flag标识 可能 或 可能不在网络文件系统下运行. 语法: 复制代码 代码如下: fs.open(path, flags, [mode], [callback(err,fd)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path     文件路径 flags     可以是以下的值 复制代码 代码如下:

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

    方法说明: 获取文件信息. 语法: 复制代码 代码如下: fs.stat(path, [callback(err, stats)]) 由于该方法属于fs模块,使用前需要引入fs模块(var fs= require("fs") ) 接收参数: path   文件路径 callback  回调,传递两个参数,异常参数err, 文件信息数组 stats stats包含以下信息:(以下信息为案例中读取的文件信息,非默认值) 复制代码 代码如下: {    dev : 0 ,    mode :

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

    方法说明: 同步版的 stat(). 方法返回一个stat数组对象,包含以下信息:(以下信息为案例中读取的文件信息,非默认值) 复制代码 代码如下: {    dev : 0 ,    mode : 33206 ,    nlink : 1 ,    uid : 0 ,    gid : 0 ,    rdev : 0 ,    ino : 0 ,    size : 378(字节) ,    atime : Tue Jun 10 2014 13:57:13 GMT +0800 <中国标准时间>

随机推荐