检查文件是不是等于其他文件
Posted
技术标签:
【中文标题】检查文件是不是等于其他文件【英文标题】:Check if a file equals to other检查文件是否等于其他文件 【发布时间】:2011-12-15 08:18:26 【问题描述】:好吧,我的服务器上有一个文件,而我的计算机上有另一个文件。我想做的是一个简单的更新程序,它检查我的计算机文件是否等于服务器中上传的文件。 (相等则未更新,不相等则下载)
我正在使用 QNetworkAccessManager 下载文件。有什么想法吗?
【问题讨论】:
【参考方案1】:您可以通过以下方式从文件生成校验和:
QCryptographicHash hash( QCryptographicHash::Sha1 );
QFile file( fileName );
if ( file.open( QIODevice::ReadOnly ) )
hash.addData( file.readAll() );
else
// Handle "cannot open file" error
// Retrieve the SHA1 signature of the file
QByteArray sig = hash.result();
对两个文件执行此操作(同时以某种方式从一台机器获取签名到另一台机器)并比较结果。
【讨论】:
【参考方案2】:您可以计算文件的SHA-1 校验和,然后比较两个校验和。如果它们相等,则文件具有相同的内容。
【讨论】:
好吧,我一直在查看 QFile,但我无法弄清楚返回数据的内容。【参考方案3】:您将需要在您的服务器(WebService 或普通 servlet/php)上使用文件名(或 ID 或 smth)作为参数并使用其校验和(SHA1、MD5)进行回复。
如果您的本地文件校验和与远程文件不同 - 下载它。
【讨论】:
以上是关于检查文件是不是等于其他文件的主要内容,如果未能解决你的问题,请参考以下文章