2016-01-24 98 views
0

以下的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

回答

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); 
    }); 
    }); 
};