方法 : Visual Basic でディレクトリを別のディレクトリにコピーする

更新 : 2007 年 11 月

My.Computer.FileSystem.CopyDirectory メソッド メソッドを使用すると、ディレクトリを別のディレクトリにコピーできます。このメソッドでは、ディレクトリ自体とその内容がコピーされます。コピー先のディレクトリが存在しない場合は作成されます。コピー先の場所に同じ名前のディレクトリが存在し、overwrite が False に設定されている場合は、2 つのディレクトリの内容がマージされます。操作の中で、ディレクトリの新しい名前を指定できます。

ディレクトリ内のファイルをコピーするときに、特定のファイルが原因で例外がスローされることがあります。たとえば、overwrite が False に設定されていて、マージを実行しているときに、既に存在するファイルなどが原因です。こうしてスローされた例外は、単一の例外に統合され、その Data プロパティにエントリが保持されています。それらのエントリでは、ファイルまたはディレクトリ パスがキーとなっており、それに対応する値には、該当する例外メッセージが格納されています。

ディレクトリを別のディレクトリにコピーするには

  • CopyDirectory メソッドを使用し、コピー元とコピー先のディレクトリ名を指定します。次の例では、TestDirectory1 という名前のディレクトリを TestDirectory2 にコピーします。その際、既存のファイルは上書きします。

    My.Computer.FileSystem.CopyDirectory("C:\TestDirectory1", "C:\TestDirectory2", True)
    

    このコードの例は、IntelliSense コード スニペットとしても利用できます。コード スニペット ピッカーでは、コード例は [ファイル システム - ドライブ、フォルダ、およびファイルの処理] にあります。詳細については、「方法 : コードにスニペットを挿入する (Visual Basic)」を参照してください。

堅牢性の高いプログラム

次の条件を満たす場合は、例外が発生する可能性があります。

  • ディレクトリに指定された新しい名前にコロン (:) またはスラッシュ (\ または /) が含まれている (ArgumentException)。

  • パスが無効である。1) 長さが 0 の文字列である、2) 空白だけが含まれている、3) 無効な文字が含まれている、4) デバイス パスである (\\.\ で開始されている)、のいずれかの理由が考えられる (ArgumentException)。

  • パスが Nothing であるため、有効でない (ArgumentNullException)。

  • destinationDirectoryName が Nothing または空の文字列である (ArgumentNullException)。

  • コピー元のディレクトリが存在しない (DirectoryNotFoundException)。

  • コピー元のディレクトリがルート ディレクトリである (IOException)。

  • パスを組み合わせると既存のファイルと同じになる (IOException)。

  • コピー元とコピー先のパスが同じである (IOException)。

  • ShowUI が UIOption.AllDialogs に設定されており、ユーザーが操作をキャンセルしたか、またはディレクトリ内のいくつかのファイルをコピーできなかった (OperationCanceledException)。

  • 操作が巡回している (InvalidOperationException)。

  • パスにコロン (:) が含まれている (NotSupportedException)。

  • パスがシステムで定義されている最大長を越えている (PathTooLongException)。

  • パス内のファイル名またはフォルダ名にコロン (:) が含まれているか、または形式が無効である (NotSupportedException)。

  • ユーザーがパスを参照するのに必要なアクセス許可がない (SecurityException)。

  • コピー先のファイルが存在するが、アクセスできない (UnauthorizedAccessException)。

参照

処理手順

方法 : Visual Basic で特定のパターンに一致するサブディレクトリを検索する

方法 : Visual Basic でディレクトリにあるファイルのコレクションを取得する

方法 : Visual Basic でディレクトリを移動する

方法 : Visual Basic でディレクトリの内容を移動する

参照

My.Computer.FileSystem.CopyDirectory メソッド