更新: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)。 
- 路径由于以下原因之一而无效:它是零长度字符串;它仅包含空白;它包含无效字符;或者它是一个设备路径(以 \\.\ 开头)(ArgumentException)。 
- 路径无效,因为它是 Nothing (ArgumentNullException)。 
- destinationDirectoryName 为 Nothing 或为空字符串 (ArgumentNullException) 
- 源目录不存在 (DirectoryNotFoundException)。 
- 源目录是根目录 (IOException)。 
- 合并的路径指向现有文件 (IOException)。 
- 源路径和目标路径相同 (IOException)。 
- ShowUI 设置为 UIOption.AllDialogs,并且用户取消了操作,或无法复制目录中的一个或多个文件 (OperationCanceledException)。 
- 操作出现循环 (InvalidOperationException)。 
- 路径包含冒号 (:) (NotSupportedException)。 
- 路径超过了系统定义的最大长度 (PathTooLongException)。 
- 路径中的文件名或文件夹名包含冒号 (:),或格式无效 (NotSupportedException)。 
- 该用户缺少查看该路径所必需的权限 (SecurityException)。 
- 目标文件存在,但无法访问 (UnauthorizedAccessException)。 
备注
此方法将复制目录的内容以及目录本身。如果目标目录不存在,则会创建它。如果具有相同名称的目录在目标位置中已存在,则合并两个目录的内容。可以在操作中为目录指定一个新名称。
在目录内复制文件时,可能会引发由特定文件导致的异常,比如,某个文件在合并期间已存在,而 overwrite 设置为 False。此类异常在引发后将被合并为单一异常,该异常的 Data 属性以 IDictionary 的形式包含一些条目,在这些条目中,文件或目录路径是键,具体的异常消息包含在对应的值中。使用 For…Each 来枚举所有条目。
任务
下表列出了涉及 My.Computer.FileSystem.CopyDirectory 方法的任务的示例。
| 要执行的操作 | 请参见 | 
|---|---|
| 复制目录 | 
示例
下面的示例将目录 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 服务 | 是 | 
| 网站 | 是 | 
权限
以下权限可能是必需的:
| 权限 | 说明 | 
|---|---|
| 控制访问文件和文件夹的能力。关联的枚举:Unrestricted。 | |
| 控制与用户界面和剪贴板相关的权限。关联的枚举:SafeSubWindows。 |