我有两个文件夹,我编写了一个c#代码,用于将文件从源文件夹复制到目标文件夹。我想逐个复制这些文件,并且还想更改目标文件夹中复制文件的名称。问题是,如何知道哪些文件已被复制?
我不想使用哈希码,因为如果源文件夹中有超过一百万个文件,那将非常耗时。这将不必要检查目标文件夹中存在的所有文件的哈希码。这会影响性能。 还有一个约束,我无法更改源文件夹中存在的文件的任何元数据。 有谁知道更好的解决方案?
答案 0 :(得分:0)
您是否担心如果您的复印作业中断,那么您还不知道哪些文件已被复制?可能一种简单的方法是在表中跟踪该信息,该表可以是各种形式,从简单文件,XML文件,JSON文件到数据库中的表,等等。它可以像以下一样基本:
D:\files\file1.dat E:\files\newName1.dat 1
D:\files\file2.dat E:\files\newName2.dat 0
D:\files\file3.dat E:\files\newName3.dat 0
D:\files\file4.dat E:\files\newName4.dat 1
第一个条目是原始文件,第二个条目是目标文件(您已经提到了名称的更改),第三个条目是文件是否已成功复制。我会预先填写这个表,这样如果你的作业重新启动,那么它所要做的就是从这个文件中读取,而不是从目录中获取所有文件名。
恢复复制作业后,您只需加载文件并复制最后一个条目为0的文件。
如果将其保存在基本文本文件中,则加载它可以像以下一样基本:
var files = File.ReadLines(filePath)
.Select(line => line.Split(' '))
.Where(entry => entry[2].Equals("0"));