慢跑的哇 2015-12-02 06:28 采纳率: 0%
浏览 1562

嵌入式应用两个文件比较

我是使用Qt在开发板上做嵌入式应用的,需要比较嵌入式系统的两个可执行文件是否相同,根据两文件是否相同的结果来执行相关qt函数,Qt怎样才能知道这两个文件不一样或者相同呢?

  • 写回答

1条回答 默认 最新

  • 泡沫o0 2023年度博客之星上海赛道TOP 1 2023-05-08 13:06
    关注

    您可以使用Qt的文件I/O类,如QFile,来逐字节比较两个文件。以下是一个简单的C++函数,用于比较两个文件是否相同。如果文件相同,则函数返回true;如果文件不同或存在任何错误(例如文件不存在或无法打开),则函数返回false

    #include <QFile>
    
    bool compareFiles(const QString &file1Path, const QString &file2Path) {
        QFile file1(file1Path);
        QFile file2(file2Path);
    
        if (!file1.open(QIODevice::ReadOnly) || !file2.open(QIODevice::ReadOnly))
            return false;
    
        if (file1.size() != file2.size()) {
            file1.close();
            file2.close();
            return false;
        }
    
        qint64 bufferSize = 4096;
        QByteArray buffer1(bufferSize, '\0');
        QByteArray buffer2(bufferSize, '\0');
    
        while (!file1.atEnd()) {
            qint64 bytesRead1 = file1.read(buffer1.data(), bufferSize);
            qint64 bytesRead2 = file2.read(buffer2.data(), bufferSize);
    
            if (bytesRead1 != bytesRead2 || buffer1 != buffer2) {
                file1.close();
                file2.close();
                return false;
            }
        }
    
        file1.close();
        file2.close();
        return true;
    }
    

    要使用此函数,只需调用它并传递您要比较的两个文件的路径。例如:

    QString file1Path = "/path/to/your/first/file";
    QString file2Path = "/path/to/your/second/file";
    
    if (compareFiles(file1Path, file2Path)) {
        // Files are identical, perform your desired action
    } else {
        // Files are different, perform your desired action
    }
    

    这个函数在比较文件时使用了缓冲区,以避免一次性加载整个文件内容到内存中。这对于嵌入式系统来说很有用,因为它们通常具有较低的内存限制。根据需要,您可以调整bufferSize变量以优化性能。

    评论

报告相同问题?

悬赏问题

  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题