我遇到了一个关于filewatcher的问题。我的要求是,当我们复制一个大小为1 GB或更大的文件夹时,文件软件应该只记录X文件夹创建的一次更改,而不是给出X下面的文件的创建事件。我想计算所有与"X“文件夹复制的文件的MD5校验和。你能在这方面给点建议吗?
public static string[] GetFilesAndFolders(string path)
{
foreach (string dirs in Directory.GetDirectories(path))
{
fileandFolderNames[counter] = dirs;
counter++;
foreach (string files in Directory.GetFiles(dirs))
{
fileandFolderNames[counter] = files;
counter++;
}
GetFilesAndFolders(dirs);
}
return fileandFolderNames;
}发布于 2009-07-13 12:32:18
由于复制大型文件夹不是单个操作,而是由多个单独的复制操作组成,因此FileSystemWatcher无法确定整个文件夹的复制操作何时完成。因此,它将分别为您提供有关每个文件的通知。我的建议是单独处理每个文件。复制完成后(触发FileSystemWatcher事件),计算MD5并放入字典。
发布于 2009-07-13 12:50:21
您应该知道的一件事是,递归地复制所有文件和文件夹是一个等待发生的堆栈溢出。有关如何将目录层次结构转换为非递归IEnumerable类的信息,请参阅this question和this blog post。
https://stackoverflow.com/questions/1119147
复制相似问题