gpt4 book ai didi

c# - 异步复制目录及其内容

转载 作者:太空狗 更新时间:2023-10-30 00:53:29 24 4
gpt4 key购买 nike

我找到了 this solution on MSDN可以将文件从一个目录复制到另一个目录,但它只从主目录而不是子目录复制。

如何修改此解决方案,使其也复制所有文件夹及其内容?

string StartDirectory = @"C:\Users\...";
string EndDirectory = @"C:\Users\....";

//Creates all of the directories and sub-directories
foreach (string dirPath in Directory.GetDirectories(StartDirectory, "*", SearchOption.AllDirectories))
Directory.CreateDirectory(dirPath.Replace(StartDirectory, EndDirectory));

foreach (string filename in Directory.EnumerateFiles(StartDirectory))
{
using (FileStream SourceStream = File.Open(filename, FileMode.Open))
{
using (FileStream DestinationStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf('\\'))))
{
await SourceStream.CopyToAsync(DestinationStream);
}
}
}

最佳答案

展开第一个循环以包含内部循环,它应该可以工作。您正在使用第一个 for 循环搜索所有文件夹,但仅枚举顶级文件夹中的文件。您还需要枚举每个子文件夹中的文件。此外,在这种情况下,DirectoryInfo 比 Directory 更易于使用。

DirectoryInfo StartDirectory = new DirectoryInfo(@"C:\Users\...");
DirectoryInfo EndDirectory = new DirectoryInfo(@"C:\Users\....");

//Creates all of the directories and sub-directories
foreach (DirectoryInfo dirInfo in StartDirectory.GetDirectories("*", SearchOption.AllDirectories))
{
string dirPath = dirInfo.FullName;
string outputPath = dirPath.Replace(StartDirectory.FullName, EndDirectory.FullName);
Directory.CreateDirectory(outputPath);

foreach (FileInfo file in dirInfo.EnumerateFiles())
{
using (FileStream SourceStream = file.OpenRead())
{
using (FileStream DestinationStream = File.Create(outputPath + file.Name))
{
SourceStream.CopyToAsync(DestinationStream);
}
}
}
}

关于c# - 异步复制目录及其内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16237509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com