VB.NETファイルを確実に削除する

スポンサーリンク

System.IO.File クラスの Delete メソッドを、読み取り専用ファイルに対して実行すると例外が発生します。これは、削除する前に読み取り専用属性を外すことで解決します。

以下は、その処理を関数化したものです。読み取り専用属性だった場合でも削除したり、または削除をキャンセルする (例外は発生しない) ことができます。

サンプルコード

以下にサンプルコードを示します。

VB.NET 全般
''' -----------------------------------------------------------------------------
''' <summary>
'''     指定したファイルを削除します。</summary>
''' <param name="stFilePath">
'''     削除するファイルまでのパス。</param>
''' -----------------------------------------------------------------------------
Public Shared Sub DeleteFile(ByVal stFilePath As String)
    Dim cFileInfo As New System.IO.FileInfo(stFilePath)

    ' ファイルが存在しているか判断する
    If cFileInfo.Exists Then
        ' 読み取り専用属性がある場合は、読み取り専用属性を解除する
        If (cFileInfo.Attributes And System.IO.FileAttributes.ReadOnly) = System.IO.FileAttributes.ReadOnly Then
            cFileInfo.Attributes = System.IO.FileAttributes.Normal
        End If

        ' ファイルを削除する
        cFileInfo.Delete()
    End If
End Sub

使用例は以下のようになります。

VB.NET 全般
    ' 読み取り専用ファイルの場合でも削除する
    DeleteFile("C:\Hoge\");

関連するリファレンス

準備中です。

スポンサーリンク