检查文件是不是等于其他文件

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)进行回复。

如果您的本地文件校验和与远程文件不同 - 下载它。

【讨论】:

以上是关于检查文件是不是等于其他文件的主要内容,如果未能解决你的问题,请参考以下文章

如何检查字符串是不是不等于 java 中的对象或其他字符串值?

Mapper 文件中SQL不等于的写法

如何检查 CSS 变量值是不是等于另一个值

检查给定对象(引用或值类型)是不是等于其默认值

如何检查一个字符是不是等于一个空格?

如何检查来自firebase的日期是不是等于今天[重复]