添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

本文演示如何使用 I/O 类将目录下的内容同步复制到另一个位置。

有关异步文件复制的示例,请参阅 异步文件 I/O

此示例通过将 CopyDirectory 方法的 recursive 参数设置为 true 来复制子目录。 CopyDirectory 方法通过对每个子目录调用其自身的方法来递归复制它们,直到再也没有子目录可以复制为止。

using System.IO;
CopyDirectory(@".\", @".\copytest", true);
static void CopyDirectory(string sourceDir, string destinationDir, bool recursive)
    // Get information about the source directory
    var dir = new DirectoryInfo(sourceDir);
    // Check if the source directory exists
    if (!dir.Exists)
        throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}");
    // Cache directories before we start copying
    DirectoryInfo[] dirs = dir.GetDirectories();
    // Create the destination directory
    Directory.CreateDirectory(destinationDir);
    // Get the files in the source directory and copy to the destination directory
    foreach (FileInfo file in dir.GetFiles())
        string targetFilePath = Path.Combine(destinationDir, file.Name);
        file.CopyTo(targetFilePath);
    // If recursive and copying subdirectories, recursively call this method
    if (recursive)
        foreach (DirectoryInfo subDir in dirs)
            string newDestinationDir = Path.Combine(destinationDir, subDir.Name);
            CopyDirectory(subDir.FullName, newDestinationDir, true);
Imports System.IO
Module Program
    Sub Main(args As String())
        CopyDirectory(".\", ".\copytest", True)
    End Sub
    Public Sub CopyDirectory(sourceDir As String, destinationDir As String, recursive As Boolean)
        ' Get information about the source directory
        Dim dir As New DirectoryInfo(sourceDir)
        ' Check if the source directory exists
        If Not dir.Exists Then
            Throw New DirectoryNotFoundException($"Source directory not found: {dir.FullName}")
        End If
        ' Cache directories before we start copying
        Dim dirs As DirectoryInfo() = dir.GetDirectories()
        ' Create the destination directory
        Directory.CreateDirectory(destinationDir)
        ' Get the files in the source directory and copy to the destination directory
        For Each file As FileInfo In dir.GetFiles()
            Dim targetFilePath As String = Path.Combine(destinationDir, file.Name)
            file.CopyTo(targetFilePath)
        ' If recursive and copying subdirectories, recursively call this method
        If recursive Then
            For Each subDir As DirectoryInfo In dirs
                Dim newDestinationDir As String = Path.Combine(destinationDir, subDir.Name)
                CopyDirectory(subDir.FullName, newDestinationDir, True)
        End If
    End Sub
End Module
  • FileInfo
  • DirectoryInfo
  • FileStream
  • 文件和流 I/O
  • 通用 I/O 任务
  • 异步文件 I/O
  • 即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:https://aka.ms/ContentUserFeedback

    提交和查看相关反馈