Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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 创建所有目录的列表_Vb.net_Visual Studio 2012 - Fatal编程技术网

Vb.net 创建所有目录的列表

Vb.net 创建所有目录的列表,vb.net,visual-studio-2012,Vb.net,Visual Studio 2012,我试图在VisualStudio2012中创建一个给定路径中所有目录及其子目录的列表 我已经很久没有接触visual basic了。我希望有人能为这项任务展示一种简单的方法 非常感谢您的任何帮助。:) System.IO命名空间中的 Directory.GetDirectories(string, string, SearchOptions) 这是一个很好的例子 但是请记住,某些目录可能具有特定的访问权限,并且您的代码可能会因IOException而失败。(对于系统目录尤其如此) 另一种选择

我试图在VisualStudio2012中创建一个给定路径中所有目录及其子目录的列表

我已经很久没有接触visual basic了。我希望有人能为这项任务展示一种简单的方法


非常感谢您的任何帮助。:)

System.IO命名空间中的

 Directory.GetDirectories(string, string, SearchOptions)
这是一个很好的例子

但是请记住,某些目录可能具有特定的访问权限,并且您的代码可能会因IOException而失败。(对于系统目录尤其如此)

另一种选择是,当您处理许多目录并且不需要填充名称的字符串数组时,最好使用

EnumerateDirectory立即启动,无需等待填充数组,在代码循环遍历枚举的情况下非常有用

  For Each dirName in Directory.EnumerateDirectories("C:\", "p*", SearchOptions.AllDirectories)
     ..... do something with the directory here ....
  Next

在System.IO命名空间中

 Directory.GetDirectories(string, string, SearchOptions)
这是一个很好的例子

但是请记住,某些目录可能具有特定的访问权限,并且您的代码可能会因IOException而失败。(对于系统目录尤其如此)

另一种选择是,当您处理许多目录并且不需要填充名称的字符串数组时,最好使用

EnumerateDirectory立即启动,无需等待填充数组,在代码循环遍历枚举的情况下非常有用

  For Each dirName in Directory.EnumerateDirectories("C:\", "p*", SearchOptions.AllDirectories)
     ..... do something with the directory here ....
  Next

此递归方法将从给定路径获取所有目录及其子目录:

选项1#

选项2#

有关更多详细信息,请参阅MSDN:


此递归方法将从给定路径获取所有目录及其子目录:

选项1#

选项2#

有关更多详细信息,请参阅MSDN:


这听起来可能是个愚蠢的问题,但如何使用结果变量呢。是数组吗?@Tera,我更新了我的问题,你得到的是IEnumerable字符串,最好是使用Dim DirList中的列表作为列表(字符串的列表)……我收到以下错误。无法将类型为“System.IO.FileSystemMemerableTerator
1[System.String]”的对象强制转换为类型为“System.Collections.Generic.List
1[System.String]”。这听起来可能是个愚蠢的问题,但如何使用结果变量。是数组吗?@Tera,我更新了我的问题,你得到的是IEnumerable字符串,最好是使用Dim DirList中的列表作为列表(字符串的列表)……我收到以下错误。无法将类型为“System.IO.FileSystemMemerableTerator
1[System.String]”的对象强制转换为类型为“System.Collections.Generic.List
1[System.String]”。
 Public Shared Sub ProcessDirectory(ByVal targetDirectory As String)
        Dim subdirectoryEntries As String() = 
                  Directory.GetDirectories(targetDirectory)
        ' Recurse into subdirectories of this directory. 
        Dim subdirectory As String 
        For Each subdirectory In subdirectoryEntries
            ProcessDirectory(subdirectory)
        Next subdirectory

    End Sub
Module Module1

        Sub Main()
            Try 
                Dim dirPath As String = "c:\\myDirctory" 

                Dim dirs As List(Of String) = New List(Of String)(Directory.EnumerateDirectories(dirPath))

                For Each folder In dirs
                    Console.WriteLine("{0}", folder.Substring(folder.LastIndexOf("\") + 1))
                Next
                Console.WriteLine("{0} directories found.", dirs.Count)
            Catch UAEx As UnauthorizedAccessException
                Console.WriteLine(UAEx.Message)
            Catch PathEx As PathTooLongException
                Console.WriteLine(PathEx.Message)
            End Try 

        End Sub 
    End Module