4
给定两条绝对路径或相对路径A
和B
,我想知道B
是否位于目录A
的“内部” - 不仅在目录本身中,而且可能位于子目录中。我想这样做没有潜在的巨大数量的fs.readdir
电话。如何查找文件是否位于具有Node.js的目录中?
举例来说,如果A
是/
和B
是/foo/bar/baz
,它应该是很明显,B
距离A
;递归的方法将是非常低效的。
一个明显的想法是将两个路径转换为绝对形式,然后检查B
的绝对路径的字符串形式是否以A
的字符串形式开始。但是,有两个问题:
- 如何将相对路径转换为绝对路径?
- 什么是符号链接等?
我会接受的答案,使以Linux工具(比rm -rf
其他......这技术上可以用来解决问题),或者第三方节点库调用。
啊!我知道必须有一些我忽略的Node API的一部分。谢谢! – 2011-05-05 03:27:24
仅仅提到检查indexOf是不够的。在这种情况下它会失败:'a/b/c','a/b/cx/y.js'。你需要检查一个目录分隔符是否在相同的长度后出现b.chartAt(a.length)== directorySeparator' – inf3rno 2016-09-03 11:05:19