C#ファイルを確実に削除する

スポンサーリンク

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

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

サンプルコード

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

C# 全般
/// -----------------------------------------------------------------------------
/// <summary>
///     指定したファイルを削除します。</summary>
/// <param name="stFilePath">
///     削除するファイルまでのパス。</param>
/// -----------------------------------------------------------------------------
public static void DeleteFile(string stFilePath) {
    System.IO.FileInfo cFileInfo = new System.IO.FileInfo(stFilePath);

    // ファイルが存在しているか判断する
    if (cFileInfo.Exists) {
        // 読み取り専用属性がある場合は、読み取り専用属性を解除する
        if ((cFileInfo.Attributes & System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly) {
            cFileInfo.Attributes = System.IO.FileAttributes.Normal;
        }

        // ファイルを削除する
        cFileInfo.Delete();
    }
}

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

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

関連するリファレンス

準備中です。

スポンサーリンク