有没有办法确定节点中符号链接的目标路径?
Is there a way to determine the destination path of a symlink in node?
情况
我只是 运行 遇到了一个不应该经常发生的奇怪情况,但我想防止它再次发生。
我有一段代码可以创建源文件夹及其所有子文件夹中所有文件的深入目录列表。
总的来说,这从来都不是问题,直到今天。
我有一个开发伙伴不小心将子文件夹的符号链接设置为指向父文件夹。这导致我的深潜回避直到崩溃。
例如:
topfolder
topfolder/sub1 - real folder
topfolder/sub2 - symlink back to topfolder
我的代码读取了 topfolder
中的所有文件,然后毫无问题地读取了 topfolder/sub1
中的所有文件。然后,由于 topfolder/sub2
指向 topfolder
我读取了 topfolder/sub2
中的所有文件,它们与 topfolder
中的相同,然后是 topfolder/sub2/sub1
,然后是 topfolder/sub2/sub2
以及 topfolder/sub2/sub2/sub2
,等等
我的问题
有没有办法在 node.js 中确定符号链接的目标?我想如果我可以创建一个我已经阅读过的文件夹列表,当 运行 进入上面的符号链接时,我确定目标确实是一个我已经阅读过的文件夹,然后我就跳过那个文件夹。
提前致谢...
Is there a way, in node.js to determine the destination of a symlink?
是的。 fs.readlink(dir)
将 return 符号链接的目的地(如果它是一个),否则出错。
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
});
情况
我只是 运行 遇到了一个不应该经常发生的奇怪情况,但我想防止它再次发生。
我有一段代码可以创建源文件夹及其所有子文件夹中所有文件的深入目录列表。
总的来说,这从来都不是问题,直到今天。
我有一个开发伙伴不小心将子文件夹的符号链接设置为指向父文件夹。这导致我的深潜回避直到崩溃。
例如:
topfolder
topfolder/sub1 - real folder
topfolder/sub2 - symlink back to topfolder
我的代码读取了 topfolder
中的所有文件,然后毫无问题地读取了 topfolder/sub1
中的所有文件。然后,由于 topfolder/sub2
指向 topfolder
我读取了 topfolder/sub2
中的所有文件,它们与 topfolder
中的相同,然后是 topfolder/sub2/sub1
,然后是 topfolder/sub2/sub2
以及 topfolder/sub2/sub2/sub2
,等等
我的问题
有没有办法在 node.js 中确定符号链接的目标?我想如果我可以创建一个我已经阅读过的文件夹列表,当 运行 进入上面的符号链接时,我确定目标确实是一个我已经阅读过的文件夹,然后我就跳过那个文件夹。
提前致谢...
Is there a way, in node.js to determine the destination of a symlink?
是的。 fs.readlink(dir)
将 return 符号链接的目的地(如果它是一个),否则出错。
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
});