[C#]ファイルを削除した時に、ゴミ箱へ移動させる

C#(.Net Framework)のプログラムから、ファイルを削除したときゴミ箱に移動させる方法です。

C#では、System.IO.File.Delete()メソッドでファイルの削除を行う事が可能ですが、この方法ではファイルがゴミ箱に移動される事無く、いきなり削除されてしまいます。削除ではなくゴミ箱への移動を行いたい場合は、FileSystemクラスのDeleteFile()メソッドを使用します。


FileSystemクラスは、Microsoft.VisualBasic.FileIOパッケージに登録されているのですが、
標準では使用できないため、参照設定でSystem.Printing(Microsoft.VisualBasic.dll)を追加します。



パッケージの追加を行ったら、以下のコードでファイルをゴミ箱に移動させる事ができます。

string fileName = "c:\\temp\\test.txt";
 
try {
    // FileSystemクラスは Microsoft.VisualBasic.FileIOパッケージ
    FileSystem.DeleteFile( fileName,
                           Microsoft.VisualBasic.FileIO.UIOption.AllDialogs,
                           Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin );
 
} catch ( System.IO.FileNotFoundException ex ) {
    System.Console.WriteLine( "削除対象ファイルが存在しません:" + ex.Message );
 
} catch ( OperationCanceledException ex ) {
    System.Console.WriteLine( "削除がキャンセルされました:" + ex.Message );




プログラムを実行すると、以下のように削除確認のダイアログが表示されます。


このダイアログを表示させたくない場合は、DeleteFile()の第二引数をOnlyErrorDialogsにします。

また、第三引数でSendToRecycleBinの替わりに、DeletePermanentlyを指定する事でゴミ箱に移動させずにファイルを削除する事も可能です。この場合は、File.Delete()メソッドと同じような振る舞いとなります。

関連記事

コメントを残す

メールアドレスが公開されることはありません。