.NET TIPS

ファイルをごみ箱に入れるには?(My機能活用)[2.0のみ、C#、VB]

デジタルアドバンテージ 遠藤 孝信
2008/01/10

 C#やVBのコードからファイルを削除する場合には、通常、Fileクラス(System.IO名前空間)のDeleteメソッドを使うが(「TIPS:ファイルをコピー/削除/リネーム/移動するには?」を参照)、ユーザーの操作をトリガとしてファイルを削除するようなケースでは、Deleteメソッドにより即座に削除するのではなく、操作ミスに備えてWindowsの「ごみ箱」に移動した方が好ましい場合がある。

 ファイルをごみ箱に移動させるには、VB用に用意されたFileSystemクラス(Microsoft.VisualBasic.FileIO名前空間)の静的メソッドであるDeleteFileメソッドにより可能だ。もちろんこのメソッドはC#からも利用することができる。

VBによるごみ箱への移動

 VBではMy機能を使ってFileSystemクラスのDeleteFileメソッドを呼び出すことができる。以下にその記述例を示す。このサンプル・プログラムはファイル「c:\tmp\gomi.bin」をごみ箱に送る。

' recyclebin.vb

Class MyRecycleBin
  Shared Sub Main()

    Dim filePath As String = "c:\tmp\gomi.bin"

    My.Computer.FileSystem.DeleteFile( _
      filePath, _
      FileIO.UIOption.OnlyErrorDialogs, _
      FileIO.RecycleOption.SendToRecycleBin)

  End Sub
End Class

' コンパイル方法:vbc recyclebin.vb
ファイルをごみ箱へ移動するVBのサンプル・プログラム
VBでは名前空間として「Microsoft.VisualBasic」までが既定でインポートされているため、UIOption列挙体などの指定は、「FileIO.〜」で書き始める。Microsoft.VisualBasic.FileIO名前空間を直接インポートした場合には、「FileIO.」の部分は記述不要となる。

 DeleteFileメソッドの第1パラメータには削除するファイルのパス名、そして第3パラメータにはRecycleOption列挙体(Microsoft.VisualBasic.FileIO名前空間)の値であるSendToRecycleBinを指定すればよい。

 第2パラメータには、UIOption列挙体(Microsoft.VisualBasic.FileIO名前空間)の値により、エラー・ダイアログのみを表示するか(OnlyErrorDialogs)、ファイル削除の進ちょく状況を示すプログレス・ダイアログを含めたすべてのダイアログを表示するか(AllDialogs)を指定できる。しかし通常はファイルの削除は一瞬で完了するため、プログレス・ダイアログの表示はほとんど意味がない。

 ちなみに、「My.Computer.FileSystem.DeleteFile(……)」の部分はMy機能を使わずに、「FileIO.FileSystem.DeleteFile(……)」と記述することもできる。

C#によるごみ箱への移動

 次に、C#からFileSystemクラスのDeleteFileメソッドを呼び出す場合の記述例を以下に示す。Visual Studio利用時には、Microsoft.VisualBasicコンポーネント(Microsoft.VisualBasic.dll)を参照設定に追加しておく必要がある。

// recyclebin.cs

using Microsoft.VisualBasic.FileIO;

class RecycleBin {
  static void Main() {

    string filePath = @"c:\tmp\gomi.bin";

    FileSystem.DeleteFile(
      filePath,
      UIOption.OnlyErrorDialogs,
      RecycleOption.SendToRecycleBin);
  }
}

// コンパイル方法:csc /r:Microsoft.VisualBasic.dll recyclebin.cs
ファイルをごみ箱へ移動するC#のサンプル・プログラム

 なお、ディレクトリのごみ箱への移動については「TIPS:進行状況を表示しながらディレクトリやファイルをコピー/移動/削除するには?(My機能活用)」で解説しているので、そちらを参照していただきたい。End of Article

利用可能バージョン:.NET Framework 2.0のみ
カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル
使用ライブラリ:FileSystemクラス(Microsoft.VisualBasic.FileIO名前空間)
使用ライブラリ:UIOption列挙体(Microsoft.VisualBasic.FileIO名前空間)
使用ライブラリ:RecycleOption列挙体(Microsoft.VisualBasic.FileIO名前空間)
関連TIPS:ファイルをコピー/削除/リネーム/移動するには?
関連TIPS:進行状況を表示しながらディレクトリやファイルをコピー/移動/削除するには?

この記事と関連性の高い別の.NET TIPS
進行状況を表示しながらディレクトリやファイルをコピー/移動/削除するには?(My機能活用)
ファイルをコピー/削除/リネーム/移動するには?
ファイルやディレクトリの作成/変更/削除を監視するには?
[ASP.NET]DataGridコントロールに削除ボタンを追加するには?
ディレクトリを作成/削除/リネーム/移動するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間