1

情况

我只是遇到了一个不应该经常发生的奇怪情况,但我想防止它再次发生。

我有一段代码可以创建一个包含源文件夹及其所有子文件夹中所有文件的深入目录列表。

总的来说,直到今天,这从来都不是问题。

我有一个开发人员不小心将子文件夹的符号链接设置为指向父文件夹。这导致我的深潜回避,直到它坠毁。

例如:

topfolder
topfolder/sub1 - real folder
topfolder/sub2 - symlink back to topfolder

我的代码读取了所有文件topfolder,然后topfolder/sub1没有问题地读取了所有文件。然后,由于topfolder/sub2指向topfolder我读取了所有文件topfolder/sub2,这些文件与 intopfoldertopfolder/sub2/sub1thentopfolder/sub2/sub2和 on totopfolder/sub2/sub2/sub2等相同。

我的问题

有没有办法在 node.js 中确定符号链接的目的地?我想如果我可以创建一个我已阅读的文件夹列表,并且当运行到上面的符号链接时,我确定目标确实是一个我已经阅读过的文件夹,然后我就跳过那个文件夹。

提前致谢...

4

1 回答 1

2

有没有办法在 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
});
于 2019-02-08T23:21:54.150 回答