我正在编写一个企业应用程序,它将本地文件夹/文件(单向服务器-->本地)与 Windows 服务器网络文件共享上的相同文件夹/文件同步。我正在使用 .Net Framework 中包含的 File.Copy 方法,它几乎可以完美运行。如果本地 PC 上不存在文件,我从服务器复制文件;如果存在,我比较修改日期,如果服务器版本较新,则覆盖它们。
当应用程序正在复制一个大文件时遇到问题,无论出于何种原因被中断并且正在复制的文件没有完成。被中断的本地文件显示与服务器副本的大小完全相同,即使只传输了一小部分,但如果您尝试在这种情况下打开它,假设它是一个 .zip 或 .pst 文件,您可以看到它已损坏,无法打开。
我要么需要一种方法来确定文件是否未完全传输以删除它并传输一个新副本,要么可能需要一种不同的方法来完成我正在尝试做的事情。请记住,速度是一个问题。
最佳答案
作为综合解决方案,您可能需要使用 Microsoft Sync framework使文件在设备间保持同步。
为确保文件相同,您可以计算两个文件的哈希值并比较它们。例如使用 SHA algorithm .这将需要完整地读取两个文件,因此可能会影响您的同步速度。
关于c# - 文件同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28709077/