|
.NET TIPS 進行状況を表示しながらディレクトリやファイルをコピー/移動/削除するには?(My機能活用)[2.0のみ、C#、VB]デジタルアドバンテージ 遠藤 孝信2006/02/24 |
![]() |
|
|
|
アプリケーションでディレクトリあるいはファイルをコピーや移動する際、ファイルが巨大だったり、ファイルの数が多かったりした場合には、その進行状況をユーザーにダイアログなどで示すべきである。
しかしながら「TIPS:ディレクトリを作成/削除/リネーム/移動するには?」や「TIPS:ファイルをコピー/削除/リネーム/移動するには?」で示されている、System.IO名前空間のクラスを使用したコピーや移動では、そのようなダイアログを表示させることは不可能だ。
VBのMy機能の1つとして提供されているファイル操作機能では、オプションの指定によりコピーや移動中にその進行状況を示す、以下のようなダイアログを表示させることができる。
![]() |
| My機能によるコピー中に表示される進行状況ダイアログ |
| ファイル操作のメソッドを呼び出すだけで、このようなダイアログを表示させることができる。これはエクスプローラでのファイル操作時に表示されるダイアログと同じであり、[キャンセル]ボタンによりコピーを中断することもできる。 |
本稿では、My機能として提供されている進行状況ダイアログ付きのディレクトリ/ファイル操作をVB、そしてC#から利用する方法についてまとめる。
My機能として提供されるファイル操作メソッド
以下に示しているメソッドが、My機能として提供されているファイル操作メソッドの一覧である。
これらのメソッドは、VBでは「My.Computer.FileSystem.CopyDirectory(……)」のように記述して呼び出すことができる。C#からは、FileSystemクラス(Microsoft.VisualBasic.FileIO名前空間)の静的メソッドとして呼び出す(具体例は後掲のサンプル・プログラムを参照)。
| |
| VBのMy機能で提供されているファイル操作メソッド一覧 | |
| これらのメソッドのうち、UIOption列挙体の値を指定するメソッドが進行状況ダイアログを表示する。すべてのメソッドは静的メソッドで、戻り値はない。パラメータ「overwrite」には上書きするかどうかを示すBoolean値を指定する。UIOptionやUICancelOptionなどパラメータは、Microsoft.VisualBasic.FileIO名前空間の列挙体の値を指定することを示している。 |
これらのメソッドのうち、パラメータとしてUIOption列挙体の値を指定するメソッドが、進行状況ダイアログ(プログレス・ダイアログ・ボックスとも呼ばれる)を表示する。
以下にそれらのメソッドのパラメータで指定可能な列挙体の値の一覧を示す。
| ||||||||||||||||||
| 進行状況ダイアログを表示するメソッドで使用される列挙体 | ||||||||||||||||||
| これら3つの列挙体はすべてMicrosoft.VisualBasic.FileIO名前空間に属している。 |
この表にもあるように、進行状況ダイアログの表示中に[キャンセル]ボタンがクリックされた場合には、デフォルトではOperationCanceledException例外(System名前空間)が発生するが、UICancelOptionパラメータでUICancelOption.DoNothingを指定しておけば、操作が中断されるだけで例外は発生しない。
ちなみに、進行状況ダイアログを表示するメソッドは、Windowsのシェル機能を利用してディレクトリやファイルの操作を行う。このため次のような上書き確認のダイアログが表示されたりもする。
![]() |
| [フォルダの上書きの確認]ダイアログ |
| デフォルトでは[いいえ]や[キャンセル]ボタンをクリックすると例外が発生する。 |
My機能のディレクトリ操作を利用したサンプル・プログラム
最後に、My機能を使って進行状況ダイアログを表示しながらディレクトリのコピー/移動/削除を行う簡単なサンプル・プログラムを示しておく。ここではコンソール・アプリケーションとして記述しているが、この場合にも進行状況ダイアログは正しく表示される。
| |
| 進行状況を表示しながらディレクトリのコピー/移動/削除を行うC#のサンプル・プログラム(progresscopy.cs) | |
| このプログラムは最終的にC:\TipsTmpディレクトリを削除してしまうので実行には注意してほしい。なおこのコードをVS 2005でビルドするには、事前にMicrosoft.VisualBasicアセンブリへの参照を追加しておく必要がある。 |
| |
| 進行状況を表示しながらディレクトリのコピー/移動/削除を行うVBのサンプル・プログラム(progresscopy.vb) | |
| このプログラムは最終的にC:\TipsTmpディレクトリを削除してしまうので実行には注意してほしい。 |
C#版のサンプル・プログラムをVisual Studio 2005でビルドする場合には、Microsoft.VisualBasic.dllを参照設定する必要がある。これについては「TIPS:C#からVBのMy機能を利用するには?」を参考にしていただきたい。
なお、いずれのメソッドにおいても、コピー先や移動先のディレクトリが存在しない場合には自動的に作成される。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:クラス・ライブラリ 処理対象:ディレクトリ&ファイル 使用ライブラリ:FileSystemクラス(Microsoft.VisualBasic.FileIO名前空間) 使用ライブラリ:UIOption列挙体(Microsoft.VisualBasic.FileIO名前空間) 使用ライブラリ:UICancelOption列挙体(Microsoft.VisualBasic.FileIO名前空間) 使用ライブラリ:RecycleOption列挙体(Microsoft.VisualBasic.FileIO名前空間) 関連TIPS:ディレクトリを作成/削除/リネーム/移動するには? 関連TIPS:ファイルをコピー/削除/リネーム/移動するには? 関連TIPS:C#からVBのMy機能を利用するには? |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




