Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 管理GetFileSystem目录错误Visual Basic 2010_Vb.net_Visual Studio 2010 - Fatal编程技术网

Vb.net 管理GetFileSystem目录错误Visual Basic 2010

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

我正在使用visual basic中的GetFileSystemEntries()来获取驱动器的完整结构,我使用了在MSDN中找到的异常来处理错误,但我不知道如何传递给我错误的目录并将其他目录保存到阵列中

这是我的代码:

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
参数的Uinsg
getfilesystemments
更适合遍历应用程序创建的目录结构。否则,在遍历任意目录时,很可能会遇到访问问题。另外,如果目录结构中有一个链接创建了一个循环


如果您创建自己的遍历算法,就可以避免这些问题。或者,如果您环顾四周,您可能会发现一个库已经为您完成了这项工作。

我没有任何其他代码,当我使用
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
(我是否必须跳过反斜杠?因为没有给我任何错误。)如果要递归地枚举从根开始的目录,那么最好编写自己的递归代码。这将允许您跳过异常(即,不允许枚举的目录)。