ファイルが使用中かチェックする

カテゴリ: VB.NET
投稿日時:2009/02/05 16:13:55
ファイルが使用中かどうかをチェックするには、ファイルが使用中だとファイル名を変更できないのを利用して、以下のようにします。

Imports System.IO

Public Class FileSystemForm

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        If CheckFileUsing("c:\test\test.csv") Then
            MessageBox.Show("使用中です。")
        End If
        
    End Sub

    ''' <summary>
    ''' ファイルが使用中かどうかをチェックする
    ''' </summary>
    ''' <param name="vstrFilePath">ファイルの絶対パス</param>
    ''' <returns>True:使用中 False:使用中ではない</returns>
    ''' <remarks></remarks>
    Private Function CheckFileUsing(ByVal vstrFilePath As String) As Boolean

        Dim f As New FileInfo(vstrFilePath)
        Dim strFileNameBK As String = f.Name

        If Not f.Exists Then
            'ファイルが存在しなければ、使用中ではない
            Return False
        End If

        Try
            'ファイル名を変更して、使用中かチェックする
            f.MoveTo(Path.Combine(f.DirectoryName, f.Name & ".BK"))
            'ファイル名を元に戻す
            f.MoveTo(Path.Combine(f.DirectoryName, strFileNameBK))

            'ファイル名の変更が成功したので、使用中ではない
            Return False
        Catch ex As Exception
            'ファイル名が変更できないので、使用中とする
            Return True
        End Try
    End Function
End Class
注)上記の方法では、メモ帳など排他制御したいアプリで開いている場合は、使用中でないと判断されます。
注)DLLの場合、参照しているEXEが起動中でもDLLは使用中でないと判断されます。
このエントリーをはてなブックマークに追加

スポンサード リンク