Visual Studio 2012 の特定のパスにあるすべてのディレクトリとそのサブディレクトリのリストを作成しようとしています。
Visual Basic に触れるのはとても久しぶりです。誰かがこのタスクの簡単な方法を示してくれることを願っています。
どんな種類の助けも大歓迎です。:)
Visual Studio 2012 の特定のパスにあるすべてのディレクトリとそのサブディレクトリのリストを作成しようとしています。
Visual Basic に触れるのはとても久しぶりです。誰かがこのタスクの簡単な方法を示してくれることを願っています。
どんな種類の助けも大歓迎です。:)
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
Dim path as string ="c:\DirectoryTest"
Dim result = Directory.EnumerateDirectories(path, "*", System.IO.SearchOption.AllDirectories)
この再帰的な方法は、指定されたパスからすべてのディレクトリとそのサブディレクトリを取得します。
オプション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