是否可以检查所有字节是否实际上都写在QFile上?目前这就是我所拥有的

QFile f(name);
if (f.open(QIODevice::WriteOnly)){
     f.write(bytes);
}
bytes的大小为1MB,有时整个块都没有写入文件,因此我最终得到了损坏的文件。

最佳答案

您正在寻找的是checksum,您可以使用它检查数据的完整性。您要在此处执行的操作是使用qChecksum,如下所示:

QFile f(name);
if (f.open(QIODevice::ReadWrite)) {
     f.write(bytes);
}

quint16 fileCheckSum = qChecksum(bytes.data(), bytes.length());

if (f.open(QIODevice::ReadWrite)) {
    QByteArray writtenBytes = f.readAll();

    quint16 writtenBytesCheckSum = qChecksum(writtenBytes .data(), writtenBytes .length());

    if(fileCheckSum == writtenBytesCheckSum)
    {
        qDebug() << "File is valid.";
    }
    else
    {
        qDebug() << "File is corrupt.";
    }
}

我还没有编译代码,但是应该可以。如果不是这样,我将举一个例子更具体。

10-04 13:13