我正在使用以下方法將目錄的內容複製到其他目錄。在C中複製大量數據的方法
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);
});
}
我唯一的問題是源路徑中有相當多的數據,並且在複製過程中程序變得無法響應。
我想知道我的選擇是對的數據複製。我做了一些研究,有人推薦使用緩衝區。
我真的沒有看到,我的理解特別好,這樣清晰而簡潔的任何幫助/資源將是巨大的任何解決方案。
感謝您的幫助!
你可以使用一個單獨的線程來運行,而不是在它的UI線程中運行它。 –
你能量化一些你正在複製的東西嗎?像目錄,文件,傳輸的數據量一樣,您可能會使用錯誤的工具進行作業 – konkked
這是一個UI應用程序嗎?如果是這樣,請在後臺線程中執行此操作。例如通過「Task.Run」 –