0

我有点困惑File.Copy。最初,我删除了整个目录结构,然后从源路径复制到目标路径,但这需要一段时间。现在我正在做的只是在目标路径上创建目录结构,如果它不存在的话。如果存在,我只想复制较新的文件。删除删除后,复制速度非常快,但我不确定它是否真的在复制较新的文件。如果我这样做File.Copy(source,target),这是否仅在文件不存在时复制文件?如果我这样做File.Copy(source,target,true),这是否会复制文件,无论它是否更新?

4

3 回答 3

1

File.Copy(source,target,true)将覆盖文件 - 无论它是否更新。

Copy没有逻辑来确定文件的新颖性或正确的操作。

您需要自己实现此逻辑 - 如果您只想复制较新的文件,则需要比较两个文件的创建日期并仅复制较新的文件。

于 2012-11-01T15:07:28.237 回答
1

您应该使用FileInfo 类并比较逻辑中的文件。

于 2012-11-01T15:09:47.003 回答
1

如果我执行 File.Copy(source,target),这是否仅在文件不存在时复制文件?

IOException如果目标文件已经存在(无论它是否较新),File.Copy(source, target)将抛出一个。

如果您的代码使用它“运行得很快”,我假设您在某处“吞下异常”(即有try一个空catch块)。那是邪恶的,因为它让你的程序“看起来”就像它在正常工作时一样正常工作。不要那样做!它使调试成为一场噩梦。

如果我执行 File.Copy(source,target,true),这是否会复制文件,无论它是否更新?

是的。

如果您希望基于某些属性复制文件,您可以使用FileFileInfo 类 有什么区别?来获取此信息。您可以在“创建时间”、“上次访问时间”和“上次写入时间”之间进行选择(取决于您如何定义“较新”)。

于 2012-11-01T15:10:06.240 回答