0

鉴于以下情况:我有一个连接到 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 驱动器上的工作方式相同。

4

1 回答 1

1

Troy 有一篇有趣的博客文章:

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

虽然我不知道它是否适用于 SMB 共享。

于 2013-06-21T21:17:35.277 回答