如何查找文件是否在Node.js的目录中?
给定两个绝对path或相对pathA
和B
,我想知道B
是否在目录A
“内部” – 不仅仅在目录本身中,而且可能在子目录中。 我想这样做没有可能庞大的fs.readdir
调用数量。
例如,如果A
是/
而B
是/foo/bar/baz
, B
应该在A
之内是非常明显A
。 recursionreaddir
方法将是非常低效的。
一个明显的想法是将两个path转换为绝对path,然后检查B
的绝对path的stringforms是否以A
的stringforms开始。 但是,有两个问题:
- 你如何将相对path转换为绝对path?
- 什么是符号链接等?
我将接受调用Linux实用程序(除了rm -rf
… 技术上可以用来解决问题)或第三方Node库的答案。
var fs = require('fs'); var a = fs.realpathSync('/home/mak/www'); // /var/www var b = fs.realpathSync('/var/www/test/index.html'); var b_in_a = b.indexOf(a) == 0; var a_is_dir = fs.statSync(a).isDirectory();
fs.*Sync
也有asynchronous版本,请参阅fs模块 。
如果path不存在, fs.realpathSync
和fs.statSync
将会抛出。