パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)


ファイルの一覧の取得(VB.NET)
(準備中)

VB.NET以降でファイルの一覧を取得する方法。ここではVB2022を使っています。
VB4〜6/VBAでは、Dir関数でファイルやディレクトリに一覧を取得しました。この方法については、
Dir関数によるファイル名の取得をご参照下さい。

1.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




2.System.IO名前空間のDirectoryクラスを使う

.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



3.






TopPage > Visual BasIc&Excel活用研究目次