投稿者 葉月  (社会人) 投稿日時 2009/11/25 10:29:18
>”unauthorized access axceptionはハンドルされませんでした。
権限のないディレクトリにアクセスしてエラーが起こっています。
ドライブ全体を対象にすると、ユーザーにアクセス権限がないフォルダを除外するよう考慮
する必要があり難度が上がると思われます。
以下に修正したサンプルを載せますが、こちらもドライブ全体を考慮していません。

>>>ただし、ファイルがないときのメッセージ
簡易的に修正したサンプルを上げるので、こちらで試してください。
このサンプルを少し修正すれば、エラーファイルのカウントなども取得できるようになりま
す。

■サンプル
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click
        Me.ListBox1.Items.Clear()
        Me.FileSearch()
    End Sub

    ''' <summary> 
    ''' ファイルを探す。 
    ''' </summary> 
    Private Sub FileSearch()
        Const SHORT_COUNT_UP As Short = 1

        ' 選択ディレクトリ 
        Dim strSelectDir As String = Me.TextBox1.Text

        If Not System.IO.Directory.Exists(strSelectDir) Then
            Return
        End If

        ' 作業ディレクトリ 
        Dim selectDirectory As New System.IO.DirectoryInfo(strSelectDir)
        ' 作業ファイル 
        Dim file As System.IO.FileInfo
        ' 一時的にファイルを格納 
        Dim arFiles As New ArrayList()
        ' 探すファイル 
        Dim strSearch As String = Me.TextBox2.Text
        Dim strFile As String = String.Empty

        ' カウント変数 
        ' 宣言はFor文の前で行うのがいいです。 
        Dim sCount As Short = 0

        For Each file In selectDirectory.GetFiles(strSearch & "*", IO.SearchOption.AllDirectories)
            strFile = file.FullName

            If System.IO.File.Exists(strFile) Then
                sCount += SHORT_COUNT_UP
                strFile = file.FullName
                arFiles.Add(strFile)
                Me.Text = String.Concat("処理ファイル数:" + sCount.ToString())
                ' プログレスバーの処理 
            Else
                MessageBox.Show("ファイルが存在しません")
            End If
        Next

        Me.ListBox1.BeginUpdate()
        Me.ListBox1.Items.AddRange(arFiles.ToArray())
        Me.ListBox1.EndUpdate()
    End Sub
   
End Class