'Tips '▼GetAllFiles ''' <summary> ''' 指定されたフォルダ以下にあるすべてのファイルを取得する ''' </summary> ''' <param name="folder">ファイルを検索するフォルダ名。</param> ''' <param name="searchPattern">ファイル名検索文字列 ''' ワイルドカード指定子(*, ?)を使用する。</param> ''' <param name="files">見つかったファイル名のリスト</param> Private Sub GetAllFiles(ByVal folder As String, _ ByVal searchPattern As String, ByRef files As ArrayList) 'folderにあるファイルを取得する Dim fs As String() = _ System.IO.Directory.GetFiles(folder, searchPattern) 'ArrayListに追加する files.AddRange(fs)
'folderのサブフォルダを取得する Dim ds As String() = System.IO.Directory.GetDirectories(folder) 'サブフォルダにあるファイルも調べる Dim d As String For Each d In ds GetAllFiles(d, searchPattern, files) Next d End Sub '▲ここまで '▼何かのイベントで開始 Dim subFolders As New ArrayList Dim files As New ArrayList '"C:\My Documents"以下のファイルをすべて取得 GetAllFiles("C:\My Documents", "*.*", files) 'ListBox1に結果を表示する ListBox1.Items.AddRange(files.ToArray()) '▲ここまで
分類:[.NET]
Tipsに掲載されている、ファイル・フォルダの分類で、「あるフォルダ以下にあるファイルをすべて取得する」のサンプルで教えて下さい。
(http://dobon.net/vb/dotnet/file/getfiles.html)
以下のTipsでボタンで繰り返し実行すると、リストボックスのリストが追加されてしまいます。毎回クリアされて新しいリストのみ表示できるようにしたいのです。
色々ネットで調べたのですが、「files.Clear()」を「GetallFile()」の前に設置してもクリアされませんでした。
どなたか、ご教示をお願いします。
'Tips
'▼GetAllFiles
''' <summary>
''' 指定されたフォルダ以下にあるすべてのファイルを取得する
''' </summary>
''' <param name="folder">ファイルを検索するフォルダ名。</param>
''' <param name="searchPattern">ファイル名検索文字列
''' ワイルドカード指定子(*, ?)を使用する。</param>
''' <param name="files">見つかったファイル名のリスト</param>
Private Sub GetAllFiles(ByVal folder As String, _
ByVal searchPattern As String, ByRef files As ArrayList)
'folderにあるファイルを取得する
Dim fs As String() = _
System.IO.Directory.GetFiles(folder, searchPattern)
'ArrayListに追加する
files.AddRange(fs)
'folderのサブフォルダを取得する
Dim ds As String() = System.IO.Directory.GetDirectories(folder)
'サブフォルダにあるファイルも調べる
Dim d As String
For Each d In ds
GetAllFiles(d, searchPattern, files)
Next d
End Sub
'▲ここまで
'▼何かのイベントで開始
Dim subFolders As New ArrayList
Dim files As New ArrayList
'"C:\My Documents"以下のファイルをすべて取得
GetAllFiles("C:\My Documents", "*.*", files)
'ListBox1に結果を表示する
ListBox1.Items.AddRange(files.ToArray())
'▲ここまで