2016-01-24 97 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); 
    }); 
    }); 
};