我只是遇到了一种不应该经常发生的奇怪情况,但是我想防止它再次发生。
我有一段代码创建了一个深层潜水目录列表,其中包含源文件夹及其所有子文件夹中的所有文件。
总体而言,直到今天,这从来都不是问题。
我有一个同僚开发人员,它不小心将子文件夹的符号链接设置为指向父文件夹。这导致我的深潜重新吸收,直到坠毁。
例如:
topfolder
topfolder/sub1 - real folder
topfolder/sub2 - symlink back to topfolder
我的代码可以毫无问题地读取topfolder
中的所有文件,然后读取topfolder/sub1
中的所有文件。然后,由于topfolder/sub2
指向topfolder
,所以我读取了topfolder/sub2
中的所有文件,这些文件与topfolder
中相同,然后依次是topfolder/sub2/sub1
和{{ 1}}到topfolder/sub2/sub2
等
在node.js中是否可以确定符号链接的目标?我想知道是否可以创建一个我已经阅读过的文件夹列表,并且在进入上面的符号链接时,我确定目的地确实是我已经阅读过的文件夹,然后我就跳过了该文件夹。
预先感谢...
答案 0 :(得分:1)
node.js中是否可以确定符号链接的目的地?
是的。 fs.readlink(dir)
将返回符号链接的目的地(如果为1),否则返回错误。
fs.readlink("sub2", function(err, destination){
if(err)
//sub2 is not a symlink, proceed to go into it
else if(destination)
//sub2 is a symlink, check if 'destination' is a folder we have already been through
});