ファイルを削除する [C#]

ファイルを削除する [C#]

C#でファイルを削除する方法について紹介します。
ファイルの削除には、System.IO名前空間のFileInfoクラスのDeleteメソッドを使用するか、FileクラスのDelete静的メソッドを使用します。

FileInfoクラスのDeleteメソッドで削除

FileInfoクラスのDeleteメソッドの構文は次のようになります。

Deleteメソッドでは削除するファイル(FileInfoクラスに指定されているファイル)が存在していなくても例外(エラー)は発生しません。Deleteメソッドはファイルが存在しない場合には何もせずに処理が終わります。

FileInfo.Deleteメソッドの使用例

以下にDeleteメソッドの使用例を示します。

引数を指定しない場合

上記の例では以下の記事「ファイルを作成する」で作成するファイルのC:\Test\CreateFile.txtファイルを削除しています。

ファイルを作成する [C#]
C#でファイルを作成する方法について紹介します。 ファイルを作成する際は、System.IO名前空間のFileInfoクラスのCreate...

Deleteメソッドでは削除するファイル存在しなくても例外(エラー)は発生しませんが、指定したファイルのパスがフォルダー(ディレクトリ)として存在する場合は例外を発生させます。
Deleteメソッドでファイルを削除する場合は、指定したパスがフォルダー(ディレクトリ)として存在しないかどうかを確認してから実行した方が安全です。

FileクラスのDelete静的メソッドで削除

FileクラスのDelete静的メソッドの構文は次のようになります。

FileクラスのDelete静的メソッドもFileInfoクラスのDeleteメソッドと同じように使用します。
引数のpathには削除するファイルのパスを指定します。

File.Delete静的メソッドの使用例

以下にDelete静的メソッドの使用例を示します。

FileクラスのDelete静的メソッドも削除するファイルがない場合でも例外は発生させません。

FileInfoクラスのDeleteメソッド、FileクラスのDelete静的メソッドともに、ファイルの読み取り専用属性が設定されていると「
System.UnauthorizedAccessException: ‘パス ‘○○○○○’ へのアクセスが拒否されました。’」という例外が発生します。
これを回避するためには削除するファイルの読み取り専用属性を変更してから削除する必要があります。
以下に読み取り専用を変更するコードの例を示します。

上記のメソッドではファイルの属性を参照して、読み取り専用属性がある場合に削除しています。このメソッドをファイルを削除する処理の前に呼び出してやることで、読み取り専用属性のファイルを削除することができます。

サンプルプログラム

Windowsフォームアプリケーションでのプログラムの実装例を記載します。

ユーザーインターフェース

フォームのインターフェースは次のようにします。

ファイル削除サンプルフォームデザイン

「…」ボタン(button1)をクリックすると、ファイルを開くダイアログを表示して、ファイルパスをテキストボックス(textBox1)に設定できるようにします。
「button2」ボタンをクリックすると、テキストボックスに入力されているパスのファイルを削除します。

ソースコード

サンプルプログラムのフォームには次のようなソースコードを記述します。

サンプルの実行

作成したプログラムを実行します。

ファイル削除サンプルフォーム

「C:\Test」フォルダーに「DeleteFile.txt」ファイルを作成します。

作成した削除するファイル

パスのテキストボックスに「C:\Test\DeleteFile.txt」を入力するか、「…」ボタンをクリックして、ファイルを開くダイアログボックスを表示して「DeleteFile.txt」ファイルを選択します。

ファイル削除サンプルフォームにファイルパスを入力

[button2]をクリックします。

メッセージが表示され、ファイルが削除されます。

ファイル削除結果メッセージ