My.Computer.FileSystem.CopyDirectory メソッド

更新 : 2007 年 11 月

ディレクトリ間のコピーを実行します。

' Usage
My.Computer.FileSystem.CopyDirectory(sourceDirectoryName ,destinationDirectoryName)
My.Computer.FileSystem.CopyDirectory(sourceDirectoryName ,destinationDirectoryName ,overwrite)
My.Computer.FileSystem.CopyDirectory(sourceDirectoryName ,destinationDirectoryName ,showUI)
My.Computer.FileSystem.CopyDirectory(sourceDirectoryName ,destinationDirectoryName ,showUI ,onUserCancel)
' Declaration
Public Sub CopyDirectory( _
   ByVal sourceDirectoryName As String, _
   ByVal destinationDirectoryName As String _
)
' -or-
Public Sub CopyDirectory( _
   ByVal sourceDirectoryName As String, _
   ByVal destinationDirectoryName As String, _
   ByVal overwrite As Boolean _
)
' -or-
Public Sub CopyDirectory( _
   ByVal sourceDirectoryName As String, _
   ByVal destinationDirectoryName As String, _
   ByVal showUI As UIOption _
)
' -or-
Public Sub CopyDirectory( _
   ByVal sourceDirectoryName As String, _
   ByVal destinationDirectoryName As String, _
   ByVal showUI As UIOption, _
   ByVal onUserCancel As UICancelOption _
)

パラメータ

  • sourceDirectoryName
    String です。コピーするディレクトリを指定します。必ず指定します。

  • destinationDirectoryName
    String です。ディレクトリをコピーする場所を指定します。必ず指定します。

  • overwrite
    Boolean です。既存のファイルを上書きするかどうかを指定します。既定値は False です。必ず指定します。

  • showUI
    UIOption です。処理の進行状況を視覚的に表示するかどうかを指定します。既定値は UIOption.OnlyErrorDialogs です。必ず指定します。

  • onUserCancel
    UICancelOption です。操作中にユーザーが [キャンセル] ボタンをクリックしたときに実行する処理を指定します。既定値は ThrowException です。必ず指定します。

例外

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

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

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

  • パスが Nothing であるため、有効ではありません (ArgumentNullException)。

  • destinationDirectoryName は、Nothing または空の文字列です (ArgumentNullException)。

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

  • コピー元のディレクトリがルート ディレクトリではありません (IOException)。

  • 結合されたパスが、既存のファイルを指しています (IOException)。

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

  • ShowUI が UIOption.AllDialogs に設定され、ユーザーが操作をキャンセルしたか、ディレクトリ内の 1 つ以上のファイルをコピーできません (OperationCanceledException)。

  • 操作が循環しています (InvalidOperationException)。

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

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

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

  • ユーザーがパスを表示するのに必要なアクセス許可がありません (SecurityException)。

  • コピー先のファイルは存在しますが、アクセスできません (UnauthorizedAccessException)。

解説

このメソッドは、内容を含めてディレクトリ全体をコピーします。コピー先のディレクトリが存在しないときは、新たに作成されます。同じ名前のディレクトリがコピー先に存在する場合は、2 つのディレクトリの内容が結合されます。コピー時にディレクトリに新しい名前を付けることができます。

ディレクトリ内のファイルをコピーするときに、特定のファイルが原因で例外がスローされることがあります。たとえば、overwrite が False に設定されていて、マージを実行しているときに、既に存在するファイルなどが原因です。このような例外は、スローされると 1 つの例外に統合され、その Data プロパティに IDictionary 形式のエントリが格納されます。このエントリには、ファイル パスまたはディレクトリ パスがキーとなり、特定の例外メッセージがそれに対応する値として格納されます。エントリを列挙するには、For…Each を使用します。

処理手順

My.Computer.FileSystem.CopyDirectory メソッドに関連するタスクの例を次の表に示します。

タスク

参照項目

ディレクトリをコピーします。

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

使用例

次のコード例は、 TestDirectory1 というディレクトリを TestDirectory2 というディレクトリにコピーし、既存のファイルを上書きします。

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

C:\TestDirectory1 および C:\TestDirectory2 は、実際にコピーするディレクトリのパスと名前およびコピー先の場所に置き換えてください。

必要条件

名前空間 : Microsoft.VisualBasic.MyServices

クラス : FileSystemProxy (FileSystem へのアクセスを可能にします)

アセンブリ : Visual Basic ランタイム ライブラリ (Microsoft.VisualBasic.dll 内)

プロジェクトの種類別の可用性

プロジェクトの種類

使用可/不可

Windows アプリケーション

クラス ライブラリ

コンソール アプリケーション

Windows コントロール ライブラリ

Web コントロール ライブラリ

Windows サービス

Web サイト

アクセス許可

以下のアクセス許可が必要な場合があります。

アクセス許可

説明

FileIOPermission

ファイルとフォルダへのアクセス許可を制御します。関連する列挙値 : Unrestricted

UIPermission

ユーザー インターフェイスおよびクリップボードに関連するアクセス許可を制御します。関連する列挙値 : SafeSubWindows

詳細については、「コード アクセス セキュリティ」および「アクセス許可の要求」を参照してください。

参照

処理手順

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

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

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

方法 : Visual Basic でファイル パスを解析する

方法 : Visual Basic でファイルの絶対パスを確認する

方法 : Visual Basic でディレクトリが存在するかどうかを確認する

参照

My.Computer.FileSystem オブジェクト

UICancelOption 列挙型