パソコン活用研究5番街(Visual
Basic、Excel(VBA)、BASIC プログラミング研究)
ファイルの一覧の取得(VB.NET)
(準備中)
VB.NET以降でファイルの一覧を取得する方法。ここではVB2022を使っています。
VB4〜6/VBAでは、Dir関数でファイルやディレクトリに一覧を取得しました。この方法については、
Dir関数によるファイル名の取得をご参照下さい。
VB.NET以降でもVB4〜6との互換性維持のため、VB4〜6と同機能のDir関数が残されており、このDir関数を使って
ファイルやフォルダ(ディレクトリ名)の一覧を取得することが可能です。将来はVB6との互換性を保つための関数は
なくなるかもしれませんが(VB2022には残っている)。
(1)Dirを使ったファイル一覧取得のプログラム
@Dir関数の使い方
基本的には、VB4〜6/VBAでは、Dir関数と同じですので、詳細はDir関数によるファイル名の取得をご参照下さい。
ただし、VB.NET以降では、Dir関数はMicrosoft.VisualBasic名前空間のFileSystemモジュールにある関数なので、
いきなりDir()と記述すると「Dirは名前空間であり式としては使えない」というようなエラーメッセージがでます。
正式には、Microsoft.VisualBasic.FileSystem.Dir() と記述することになりますが、デフォルトでMicrosoft.VisualBasic名前空間
はimportされているようなので、FileSystem.Dir() で使えると思います。
(以下のプログラムは両方の記述の仕方をして試している)
Aリスト
.net framework2.0以降、VB2015以降でVBでもリストが使えるようになった(らしい)。
ファイル名の一覧はfilenamesというリストに保存していきます。
ファイル名を取得しきったら、以下のForループで一挙に表示させています。
For Each fileName In fileNames
Console.WriteLine(fileName)
Next
For Each .. In .. の構文については
実行してみたところ
Imports System.IO Module Program Sub Main(args As String()) ' Specify the directory path Dim directoryPath As String Dim fileNames As List(Of String) Console.Write("DirectoryPath:") directoryPath = Console.ReadLine() ' Call the GetFileNames function to retrieve the list of file names fileNames = GetFileNames(directoryPath) ' Display the file names Console.WriteLine("List of File Names:") For Each fileName In fileNames Console.WriteLine(fileName) Next Console.ReadLine() End Sub Function GetFileNames(directoryPath As String) As List(Of String) Dim fileNames As New List(Of String) ' Use the Dir function to get the first file in the directory Dim fileName As String = Microsoft.VisualBasic.FileSystem.Dir(directoryPath) ' Loop through all files in the directory using Dir Do While fileName <> "" ' Add the file name to the list fileNames.Add(fileName) ' Use Dir with no arguments to get the next file fileName = FileSystem.Dir() Loop Return fileNames End Function
.NET Framework2.0以降なら、System.IOの名前空間のDirectoryクラスのメソッドのGetFiles
を使うともっと簡単にファイル名一覧の取得ができます。
GetFilesメソッドで指定されたフォルダ(ディレクトリ)にあるファイル名を全て取得します。
Dir関数の場合は、1つ1つのファイル名を取得してはリストに追加して保存していましたが、これと比べると
大違いです。
Imports System Imports System.IO Module Program Sub Main(args As String()) ' Specify the directory path Dim directoryPath As String Dim fileNames As String() Console.Write("DirectoryPath:") directoryPath = Console.ReadLine() ' Call the GetFileNames function to retrieve the list of file names fileNames = Directory.GetFiles(directoryPath) ' Display the file names Console.WriteLine("List of File Names:") For Each fileName In fileNames Console.WriteLine(fileName) Next Console.ReadLine() End Sub End Module
TopPage > Visual BasIc&Excel活用研究目次