Vb.net 管理GetFileSystem目录错误Visual Basic 2010
我正在使用visual basic中的GetFileSystemEntries()来获取驱动器的完整结构,我使用了在MSDN中找到的异常来处理错误,但我不知道如何传递给我错误的目录并将其他目录保存到阵列中 这是我的代码:Vb.net 管理GetFileSystem目录错误Visual Basic 2010,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我正在使用visual basic中的GetFileSystemEntries()来获取驱动器的完整结构,我使用了在MSDN中找到的异常来处理错误,但我不知道如何传递给我错误的目录并将其他目录保存到阵列中 这是我的代码: Dim array() Try array = System.IO.Directory.GetFileSystemEntries("C:\", "*", System.IO.SearchOption.AllDirectories) F
Dim array()
Try
array = System.IO.Directory.GetFileSystemEntries("C:\", "*", System.IO.SearchOption.AllDirectories)
For Each x As System.String In array
list_Drives.Items.Add(x)
Next
Catch exp As UnauthorizedAccessException
System.Console.WriteLine("I don't have permission here")
Catch exp As ArgumentNullException
System.Console.WriteLine("Path is a null reference.")
Catch exp As System.Security.SecurityException
System.Console.WriteLine("The caller does not have the " + _
"required permission.")
Catch exp As ArgumentException
System.Console.WriteLine("Path is an empty string, " + _
"contains only white spaces, " + _
"or contains invalid characters.")
Catch exp As System.IO.DirectoryNotFoundException
System.Console.WriteLine("The path encapsulated in the " + _
"Directory object does not exist.")
End Try
谢谢异常是由
System.IO.Directory.GetFileSystemEntries
引发的,因此发生这种情况时,for循环不会执行,并且没有“其他”目录(除非您没有显示其他代码)
如果希望从根目录开始递归枚举目录,那么最好编写自己的递归代码。这将允许您跳过异常(即,不允许枚举的目录) 带有
System.IO.SearchOption.AllDirectories
参数的Uinsggetfilesystemments
更适合遍历应用程序创建的目录结构。否则,在遍历任意目录时,很可能会遇到访问问题。另外,如果目录结构中有一个链接创建了一个循环
如果您创建自己的遍历算法,就可以避免这些问题。或者,如果您环顾四周,您可能会发现一个库已经为您完成了这项工作。我没有任何其他代码,当我使用
System.IO.Directory.getFileSystems(“C:\”)时,此代码在一个按钮中。
所有工作正常,并且我的列表框已被填充。但是仅仅使用根目录,您没有得到异常?顺便说一句,您应该避开反斜杠:“C:\\”
not,当我使用:Dim array()array=System.IO.Directory.GetFileSystemEntries(“C:\”)时,数组列表中的每个x As System.String\u Drives.Items.Add(x)接下来
我没有任何例外。当代码试图进入回收站目录中的某个目录时,会发生异常UnauthorizedAccessException
(我是否必须跳过反斜杠?因为没有给我任何错误。)如果要递归地枚举从根开始的目录,那么最好编写自己的递归代码。这将允许您跳过异常(即,不允许枚举的目录)。