如何在使用IO.Directory.EnumerateDirectories时忽略Documents文件夹中的连接点

如何在使用IO.Directory.EnumerateDirectories时忽略Documents文件夹中的连接点,第1张

概述如何在使用IO.Directory.EnumerateDirectories时忽略Documents文件夹中的连接点

Dim dirs As List(Of String) dirs = New List(Of String)(IO.Directory.EnumerateDirectorIEs(path,"*",SearchOption.AllDirectorIEs))

以下代码大部分工作正常,但由于连接点,在c: users documents文件夹中总是失败。

我得到以下exception和堆栈跟踪。

有没有一种方法来排除连接点和使用EnumerateDirectorIEs或将不得不编写代码手动获取目录名称和忽略/处理交界点?

@H_404_9@例外:


{“访问path'C: Users jkfredri documents 我的音乐'被拒绝。”}

file.copy()从networking共享到另一个共享在同一台机器上通过networking复制文件?

命令行窗口编译器(cl.exe)目标

C#:什么是最快的方式来生成一个唯一的文件名?

从windows机器与SSH会话交互的最简单方法?

在C#中使用Socket改进TCP转发器

@H_404_9@堆栈跟踪:


System.IO.fileSystemEnumerableIterator 1.AddSearchableDirsToStack(SearchData localSearchData)" & vbCrLf & " at System.IO.fileSystemEnumerableIterator ”在System.IO.__ Error.WinIOError(Int32 errorCode,String maybeFullPath)“&vbCrLf&”1.MoveNext() System.Collections.Generic.List中的“&vbCrLf&” 1..ctor(IEnumerable 1集合)“&vbCrLf&”位于C: Users \ Visual Studio中BUDwindows.BUD.fileSystem.Directory.GetDirectorIEsList(String path) Projects Desktop Applications BUDwindows Classes fileSystemManager.vb:第292行“

处理丢失的.NET Framework(0xc0000135)崩溃更好?

如何在windows窗体上显示必填字段

在任何应用程序中监视select

混合托pipe/非托pipeassembly加载顺序

如何通过互联网更新.net windows应用程序

有一个fileAttribute指示它是否是一个reparsepoint条目。 为了解决这个问题,你需要一个DirectoryInfo对象。 由于每一个都需要测试,你可以使用DirectoryInfo.EnumerateDirectorIEs()来获取它们的列表,而不是从你得到的名字中逐一创建它们。

然后,如果您只想要名称,请在reparsepoint被排除后Select该名称。 扩展方法可以完成大部分的工作:

Dim dInfo = New DirectoryInfo(dpath) Dim Dirnames = dInfo.EnumerateDirectorIEs("*.*",SearchOption.topDirectoryOnly). Where(Function(q) IsReparse(q) = False). Select(Function(q) q.Fullname). ToList() For Each s As String In Dirnames.ToArray() Dirnames.AddRange(Directory. EnumerateDirectorIEs(s,"*.*",SearchOption.AllDirectorIEs)) Next

然后,一个帮手方法:

Private Function IsReparse(d As DirectoryInfo) As Boolean Return ((d.Attributes And fileAttributes.reparsepoint) = fileAttributes.reparsepoint) End Function

这将获取Reparse属性为false的顶级文件夹名称,然后迭代这些名称以获取子文件夹名称。 前提是Reparse文件夹将仅位于顶层。 然后就这样,它只是将子文件夹添加到列表中。

显然,即使首先对reparsepoint进行测试也不会阻止它使用SearchOption.AllDirectorIEs查找它们中的子文件夹。

您可以将fileAttributes测试放在WHERE方法中,但是根据您在做什么,您可能会发现您也想跳过具有System属性的测试。

总结

以上是内存溢出为你收集整理的如何在使用IO.Directory.EnumerateDirectories时忽略Documents文件夹中的连接点全部内容,希望文章能够帮你解决如何在使用IO.Directory.EnumerateDirectories时忽略Documents文件夹中的连接点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1276952.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存