在使用mono将.net应用程序移植到Linux时,我注意到它的IO.GetDirectories实现遵循Linux上的符号链接(当我的程序到达/home/clement/svn/obrowser/tutorial/distrib/tutorial/distrib/tutorial/distrib/tutorial/distrib/tutorial/distrib/tutorial/distrib/tutorial/distrib/tutorial/distrib/tutorial/distrib时,这个问题变得很明显)。
我在mono的网站上找不到任何关于这种行为的文档,除了一个很小的论坛帖子,也找不到任何地方。
您是否知道防止IO.GetDirectories跟随符号链接的解决方法?
发布于 2011-04-25 22:10:46
你可以检查File.GetAttributes,符号链接会有ReparsePoint属性,我用windows symlink和ubuntu10.10测试过了。
但是,这并不能阻止GetDirectories递归枚举,您必须自己进行递归。
如果你不需要跨平台的支持,你可能想看看Mono.Unix.UnixDirectoryInfo。
发布于 2013-10-18 03:05:09
如果将对Mono.Posix的引用添加到项目中,则以下代码将测试路径是否指向符号链接:
Mono.Unix.UnixSymbolicLinkInfo i = new Mono.Unix.UnixSymbolicLinkInfo( path );
if( i.IsSymbolicLink ) ...您还可以测试其他文件类型(如Fifo、Socket、BlockDevice等)。使用
switch( i.FileType )https://stackoverflow.com/questions/5775739
复制相似问题