2

Visual Studio 2012 の特定のパスにあるすべてのディレクトリとそのサブディレクトリのリストを作成しようとしています。

Visual Basic に触れるのはとても久しぶりです。誰かがこのタスクの簡単な方法を示してくれることを願っています。

どんな種類の助けも大歓迎です。:)

4

3 に答える 3

3

System.IO 名前空間で

 Directory.GetDirectories(string, string, SearchOptions)

MSDNの良い例

 Dim dirs As String() = Directory.GetDirectories("c:\", "*.*", SearchOption.AllDirectories)
 Console.WriteLine("The number of directories starting with p is {0}.", dirs.Length)
 Dim dir As String 
 For Each dir In dirs
    Console.WriteLine(dir)
 Next 
 Catch e As Exception
      Console.WriteLine("The process failed: {0}", e.ToString())
 End Try 

ただし、一部のディレクトリには特定のアクセス許可があり、コードが IOException で失敗する可能性があることに注意してください。(これは特にシステム ディレクトリに当てはまります)

もう 1 つのオプションは、Directory.EnumerateDirectoriesを使用することです。これは、多くのディレクトリを操作し、文字列配列に名前を入力する必要がない場合に適しています。

EnumerateDirectories は、配列がいっぱいになるのを待たずにすぐに開始され、コードが列挙をループする状況で非常に役立ちます

  For Each dirName in Directory.EnumerateDirectories("C:\", "p*", SearchOptions.AllDirectories)
     ..... do something with the directory here ....
  Next
于 2013-05-24T07:27:56.390 に答える
1
Dim path as string ="c:\DirectoryTest"

Dim result = Directory.EnumerateDirectories(path, "*", System.IO.SearchOption.AllDirectories)
于 2013-05-24T07:29:42.257 に答える
0

この再帰的な方法は、指定されたパスからすべてのディレクトリとそのサブディレクトリを取得します。

オプション1#

 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

オプション 2#

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

詳細については、MSDN を参照してください。

http://msdn.microsoft.com/en-us/library/c1sez4sc.aspx

http://msdn.microsoft.com/en-us/library/dd383304.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

于 2013-05-24T07:33:34.743 に答える