我正在实现一个.NET实用程序来将我的本地文件夹与FTP位置同步。检查文件是否相同的最佳方法是什么。我正在使用名为'edtfptnet'的.NET FTP客户端API。我发现即使文件相同,exe文件的大小也不同。 API返回的大小与FileZilla显示的文件大小相同。但它与FileInfo.Length获得的大小不同。这两个值都与Windows资源管理器在文件属性中显示的大小不同。为什么会这样?文本文件不会发生这种情况。
有没有其他方法可以快速检查文件是否相同。访问时间不同。 API仅提供上次修改时间,该时间与上次写入时间不同。
答案 0 :(得分:1)
通常,如果两个文件的大小和修改时间相同,则可以假定它们是相同的。我不熟悉edtfptnet客户端,但是对于相同的文件,远程文件大小应该等于FileInfo.Length,它应该与Windows资源管理器报告的大小相等(确保你看“大小:”而不是“磁盘上的大小: “),除了VMS这样的深奥操作系统(文件以512个增量报告,或”块“,无论实际文件大小如何)。
为了确保文件完全相同,您需要计算并比较每个文件的哈希值。某些FTP服务器支持XCRC命令,该命令对文件的CRC32哈希进行服务器端计算,然后您可以将其与您为本地文件计算的CRC32哈希进行比较(例如this post)。但除了比较文件大小外,还需要这样做。