トップ  >  サンプルソース  >  ファイル一覧取得(VB.NET)

ファイル一覧取得(VB.NET)

2010年01月08日

いろんなプログラムで「フォルダ内のファイル一覧」が必要になります。ファイル更新日時とファイルサイズも取得取得します。リムーバルディスクやLANディスク等、ドライブが存在しない場合は例外を発生させます。C#版を作っていないのはVB専用だからでは無く面倒だったからです。移植可能です。

今後、このサンプルを使用して役立つサンプル(ソース/コード)を作って行きたいと思います。

' ----------------------------------------------------------
' ファイル一覧を取得するサンプル(VB.NET/VS2005)
Private Sub Button1_Click( _
    ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    Dim ls As String() = GetFList("D:\Temp")
    For i As Integer = 0 To UBound(ls)
        Debug.WriteLine( _
            (i + 1).ToString("000") & ":" & ls(i))
    Next
End Sub

' フォルダ内のファイル一覧取得
Private Function GetFList( _
    ByVal pt As String) As String()

    Dim ls As String() = New String(-1) {}
    Dim l2 As String() = New String(-1) {}
    Dim ln As Integer

    ' ファイル一覧/フォルダ一覧取得初期設定
    If IO.Directory.Exists( _
        IO.Path.GetPathRoot(pt)) Then
        ' ドライブ存在OK
        If IO.File.Exists(pt) Then
            ' 指定ファイル初期設定
            ReDim Preserve ls(0)
            ls(0) = pt
        ElseIf IO.Directory.Exists(pt) Then
            ' 指定フォルダ初期設定
            ReDim Preserve ls(0)
            ls(0) = pt
            ln = ls(0).Length
            If ls(0).Substring(ln - 1) <> "\" Then
                ls(0) = ls(0) & "\"
            End If
            GetFList_Sub(pt, ls)
            Array.Sort(ls)
        End If
    Else
        ' ドライブ存在NG
        Throw New Exception("Drive Not Found(" & _
            IO.Path.GetPathRoot(pt) & ")")
    End If

    ' ファイルの更新日時とファイルサイズ取得
    For i As Integer = 0 To UBound(ls)
        Dim fp As String = ls(i)
        ln = ls(i).Length
        If ls(i).Substring(ln - 1) <> "\" Then
            ' ファイルのみ一覧に加える
            Dim fi As New IO.FileInfo(ls(i))
            Dim df As String = "yyyy/MM/dd HH:mm:ss"
            Dim dt As String = fi.LastWriteTime.ToString(df)
            Dim sz As String = fi.Length
            ReDim Preserve l2(UBound(l2) + 1)
            l2(UBound(l2)) = fp & vbTab & dt & vbTab & sz
        End If
    Next
    Return l2
End Function

' 再帰的にサブフォルダの一覧取得
Private Sub GetFList_Sub( _
    ByVal pt As String, ByRef ls As String())

    ' フォルダ情報取得
    Dim di As IO.DirectoryInfo = _
        New IO.DirectoryInfo(pt)

    ' ファイルの一覧作成
    Dim sf As IO.FileInfo() = di.GetFiles()
    For i As Integer = 0 To UBound(sf)
        ReDim Preserve ls(UBound(ls) + 1)
        ls(UBound(ls)) = sf(i).FullName
    Next

    ' フォルダの一覧作成
    Dim sd As IO.DirectoryInfo() = di.GetDirectories()
    For i As Integer = 0 To UBound(sd)
        ReDim Preserve ls(UBound(ls) + 1)
        ls(UBound(ls)) = sd(i).FullName & "\"
        Dim sds As String() = New String(-1) {}
        GetFList_Sub(sd(i).FullName, sds)
        For j As Integer = 0 To UBound(sds)
            ReDim Preserve ls(UBound(ls) + 1)
            ls(UBound(ls)) = sds(j)
        Next
    Next
End Sub
' ----------------------------------------------------------
スポンサーサイト

フォルダ比較(VB.NET) | トップページへ戻る | WEBページの差分(ツール)

このページのトップに戻る

コメント

名前
題名
メールアドレス
WEBサイト
 
コメント
パスワード
  管理者にだけ表示を許可する

このページのトップに戻る

トラックバック

このページのトップに戻る