验证路径是否指向给定目录中的另一个路径

时间:2016-01-24 10:50:14

标签: node.js

以下node.js函数获取路径并成功检查它是否是符号链接(分别打印truefalse到控制台):

    var confirmPathNotSymLinked = function(path) {
         var fs = require("fs");
         fs.lstat(path, function(err, stats) {
                          console.log("is this file a symlink?: " + stats.isSymbolicLink());
         });
     }

问题:我现在如何检查路径是否只是一个符号链接,而是一个指向特定目录的符号链接?

例如,如果/path/to/file1指向/the/actual/address/file1,那么我如何创建一个pointsWithin函数,pointsWithin("/path/to/file1", "/the/actual/address")返回true

1 个答案:

答案 0 :(得分:0)

您可以使用fs.readlink

以下是可能的实施方式:

function pointsWithin(path, dir, cb) {
  fs.lstat(path, function(err, stats) {
    if (err) return cb(err);
    if (! stats.isSymbolicLink()) return cb(new Error('not a symlink'));
    fs.readlink(path, function(err, dest) {
      if (err) return cb(err);
      return cb(null, dest.indexOf(dir) === 0);
    });
  });
};