CopyExの使い方について説明します

0.CopyEx.dllアセンブリの概要
1.使い方
2.動作環境
3.対応OS
4.リファレンス

0.CopyEx.dllアセンブリの概要
 使い方が非常に簡単です。  名前空間 ChinTools の中の CopyEx をインスタンス生成して、
 CopyEx のメソッド StartCopy() を呼び出すだけです。
 また、例外をコンポーネントからあがることはほとんどありません、
 作成時に指定したパラメータに従って例外をコンポーネント内部ですべて処理します。
 通常、予想しないことが起きた場合コンポーネントから例外を起こすべきですが、それでは
 本コンポーネントの主旨の一つであるアプリケーションの負担軽減の意味が薄くなりますので、
 内部で処理することにしました。ただし、エラーメッセージは指定があれば表示されます。

1.使い方
 まず、アプリケーションプログラムからアセンブリを参照できるようにします。
 ・統合開発環境(IDE)を使う場合、「参照設定」、「参照の追加」などというようなメニュー項目があります、
  画面に従って CopyEx.dll を追加してください。これでアプリケーションから使えるようになります。
  ※本コンポーネントはIDEのデザイナから利用することはできません。
 ・テキストエディタ+コンパイラという開発スタイルの場合、
  CopyEx.dll をコンパイラが見つけられる場所にコピーし、コンパイルオプションを指定してください。
  例えば、C# コンパイラなら、/reference(短い形式 /r) に CopyEx.dll を指定すれば良いです。
  指定方法は各言語のコンパイラマニュアルをご覧ください。
 アプリケーションから使えるようになれば次に、実際にコード例を示します。
  C#の例です。ほかの言語でも、各言語の文法に変更すれば、ほとんど同じです。
  サンプルです、そのままでは実行できません。ファイル名等はすべて仮定です。

     //コピー元(ファイル、またはフォルダ)、この例ではコピー元は二つ
     string[] CopySRC = new string[2];
     CopySRC[0] = @"c:\test"; //フォルダの例
     CopySRC[1] = @"c:\ABC.txt"; //ファイルの例
     //コピー先のフォルダ、この例ではコピー先は一つ
     string[] CopyDEST = new string[1];
     CopyDEST[0] = @"d:"; //ドライブDにコピーする
     //オプションは配列で設定する
     //配列要素 0 番:エラー発生時メッセージ表示する(1)しない(0)
     //配列要素 1 番:確認画面表示しないで無条件上書きする(1)しない(0)
     //配列要素 2 番:上書きをスキップする(1)しない(0)
     //配列要素 3 番:エラー発生時、処理を続行する(1)しない(0)
     //配列要素 4 番:上書き種類 差分(1) 完全(0)
     char[] Option = new char[]{ '1', '0', '0', '0', '1'};
     ChinTools.CopyEx cpEx = new ChinTools.CopyEx(CopySRC, CopyDEST, false, Option, false, true, "", true, false, "*");
     cpEx.StartCopy();
     //実行後、フォルダc:\test(とそのすべてサブフォルダおよびファイル) と ファイルc:\ABC.txt が
     //d:\ にコピーされます。


2.動作環境
 ・本コンポーネントは Microsoft .NET Framework1.1以上 にて動作します。
 ・CLS準拠でコンパイルしておりますので、多くのの.NET対応言語から使用できます。
  動作確認済言語 C#, VB.NET, Delphi8
  これ以外、動作未確認の言語でもおそらく動作するでしょう。

3.対応OS
 ・Windows2000、XP、2003で動作確認しております。
 ・Windows98、ME、NTでも動作可能ですが、環境がないため
  動作確認はしておりません。

4.リファレンス
 ・名前空間
   ChinTools
 ・オブジェクト
   CopyEx
 ・コンストラクタ
     public CopyEx(
       string[] CopySource, //コピー元(ファイル、またはフォルダ)を格納する string 型配列
       string[] CopyDest, //コピー先(フォルダ)を格納する string 型配列
       bool UseIniFile, //必ずfalse
       char[] Option, //コピーオプションを格納する char 型配列
       bool MoveFile, //処理がコピー(false)か移動(true)か
       bool _WriteLog, //ログを出力する(true)しない(false)
       string LogPath, //ログファイル名
       bool WithAttribute,//フォルダ、ファイルの属性もコピーする(true)しない(false)
       bool BackGround, //進捗画面表示する(false)しない(true) 画面を表示しない場合、エラーメッセージも一切でません、ただし上書き確認画面は出ます。
       string searchPattern //コピー対象ファイルのパターン 例 *.txt(テキストファイルのみ) *(すべて)
    )
  Option
   要素数5個の char 型の配列です。※言語によっては配列開始インデックスが 0 の場合もあります
    配列要素 1 番:エラー発生時メッセージ表示する(1)しない(0)
    配列要素 2 番:確認画面表示しないで無条件上書きする(1)しない(0)
    配列要素 3 番:上書きをスキップする(1)しない(0)
    配列要素 4 番:エラー発生時、処理を続行する(1)しない(0)
    配列要素 5 番:上書き種類 差分(1) 完全(0)
     差分上書きとは:コピー元とコピー先に異なるファイルがあっても無視されます。
      つまり同じファイル、フォルダのみが上書きの対象となります。Windowsのデフォルトの動作です。
      上書きと指定にしたとしても、処理実行後、コピー元とコピー先の構成が異なる場合があります。
     完全上書きとは:コピー元をコピー先に完全に一致させるものです。
      処理実行後、コピー元とコピー先は全く同じ構成になります。
  LogPath
   _WriteLog を false に設定した場合、これは無視されます。
   _WriteLog を true に設定した場合、
    LogPath に格納されたファイル名へログは出力されます。
     既に存在しているファイルなら例外があがります。
    LogPathに空文字を渡すとログはコンソールへ出力されます。
 ・プロパティ
  bool Copying [読み]
   ファイルをコピー中のなら true を返します。それ以外 false を返します。
  int TranferSize [読み書き]
   一回のコピー量です。バイト単位です。
   大きいサイズのファイルの場合、このサイズに区切ってちょっとずつコピーされます。
   デフォルトでは 1024 * 80 (80KB) に設定されています。
   これを変更する必要はほとんどありませんが、HDD あるいはストレージの速度にあわせて微調整
   すれば、よりよいパフォーマンスを得ることができます。
   たとえば、性能のよい HDD ならこのプロパティを大きくしたり、FDD ならかなり小さめに変更するといいでしょう。
   重要:ひとつファイルのコピーの最中では、絶対にこれを変更してはいけません。
 ・イベント
   CopyFinished
    処理終了時に、このイベントが発生します。
    CopyExの処理は非同期に実行されますので、処理終了を探知するにはこのイベントを使うことができます。
    コード例:
         ChinTools.CopyEx cp = new ChinTools.CopyEx(.....);
         cp.CopyFinished += new ChinTools.CopyFinishedEventHandler(cp_CopyFinished);
         cp.StartCopy();
         ....
         private void cp_CopyFinished(object sender, ChinTools.CopyFileEventArgs cfe) {
           if(cfe.Reason == ChinTools.CopyFinishedReason.Cancel){
             MessageBox.Show("キャンセルされました。");
           }
           else if(cfe.Reason == ChinTools.CopyFinishedReason.Error){
             MessageBox.Show("処理は、エラーで終了しました。");
           }
           else{ //cfe.Reason == ChinTools.CopyFinishedReason.Normal
             MessageBox.Show("正常終了しました。");
           }
         }
   注意:コンストラクタのパラメータでエラー発生時でも処理を続行に設定した場合、エラーで終了になることはありません。
 ・メソッド
  StartCopy()
   処理を開始します。

その他
 コンポーネントへ、ファイルまたはフォルダの相対パスを渡してはいけません。
 ユーザー入力より相対パスが入力された場合、アプリケーション側でそれを絶対パスに変換してから
 コンポーネントに渡すようにしてください。





ホームへ