J#(Java)ファイルを確実に削除する

スポンサーリンク

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

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

サンプルコード

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

J# 全般
/********************************************************************************
 *      指定したファイルを削除します。
 *
 * @param   stFilePath  削除するファイルまでのパス。
 ********************************************************************************/
public static final void DeleteFile(final String stFilePath) {
    final System.IO.FileInfo cFileInfo = new System.IO.FileInfo(stFilePath);

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

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

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

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

関連するリファレンス

準備中です。

スポンサーリンク