如何检测递归链接的目录?

时间:2013-06-21 20:31:36

标签: c# .net recursion directory smb

鉴于以下情况:我有一个连接到SMB共享的Windows客户端。我想以递归的方式潜入该共享中的目录以对文件执行某些操作(如果超出某个大小,请设想为它们计算sha1哈希值)。

我通常会这样做:递归dirInfo.EnumerateDirectories()捕获一些特殊情况,例如未经授权的访问,并将文件排队到操作员线程(然后对sha1进行计算)。

挑战:递归符号链接。我的测试场景非常简单

me@smb:~$ ls -l /home/me/tmp/recursionStartsHere
lrwxrwxrwx recursion -> /home/me/tmp/recursionStartsHere

我尝试过的(除了googlin)是使用dirInfo.Attributes.HasFlag(FlagAttributes.ReparsePoint)来检测符号链接,当然这些符号链接不起作用。蛮力方法似乎使用内容中的累积校验和来索引每个目录 - 这可能甚至不是无冲突的。

由于我现在没有实际的想法,如何告诉某个目录(仅)是一个符号链接?当然,我更喜欢独立的平台,所以我的代码工作原理相同远程SMB以及本地NTFS驱动器。

1 个答案:

答案 0 :(得分:1)

特洛伊有一篇有趣的博客文章:

http://troyparsons.com/blog/2012/03/symbolic-links-in-c-sharp/

虽然我不知道它是否与SMB共享。