我正在使用以下方法将目录的内容复制到不同的目录。
public void DirCopy(string SourcePath, string DestinationPath)
{
if (Directory.Exists(DestinationPath))
{
System.IO.DirectoryInfo downloadedMessageInfo = new DirectoryInfo(DestinationPath);
foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
file.Delete();
}
foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories())
{
dir.Delete(true);
}
}
//=================================================================================
string[] directories = System.IO.Directory.GetDirectories(SourcePath, "*.*", SearchOption.AllDirectories);
Parallel.ForEach(directories, dirPath =>
{
Directory.CreateDirectory(dirPath.Replace(SourcePath, DestinationPath));
});
string[] files = System.IO.Directory.GetFiles(SourcePath, "*.*", SearchOption.AllDirectories);
Parallel.ForEach(files, newPath =>
{
File.Copy(newPath, newPath.Replace(SourcePath, DestinationPath), true);
});
}
我唯一的问题是源路径中有相当多的数据,并且在复制过程中程序变得无响应。
我想知道复制数据的选项是什么。我做了一些研究,有人建议使用缓冲区。
我还没有真正看到任何我特别理解的解决方案,因此任何清晰简洁的帮助/资源都会很棒。
谢谢你的帮助!
如果您的目标是阻止应用程序进入无响应状态,则建议的使用缓冲区的方法将无法解决您的问题。相反,请考虑使用单独的Thread
复制您的目录。
更好的是,使用BackgroundWorker
,它的另一个好处是能够报告进度。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)