QFile传文件,文件有缺失

用QFile传文件.read和.write返回的大小都和原文件一样,但是传出来的文件有缺失。请问大家可能是什么情况

是不是 QFile open 的模式不一样? 比如一个 QIODevice::Text 另一个没有
或者是编码问题 一个是 GB2312 另一个是 utf-8

  • 这篇文章讲的很详细,请看:QT 怎么删除文本文件中的某一行数据?(QFile)
  • 除此之外, 这篇博客: Qt 文本文件读写中的 2.QFile读写文本文件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • QFile::open() 函数打开文件时需要传递 QIODevice::OpenModeFlag 枚举类型的参数,决定文件以什么方式打开,QIODevice::OpenModeFlag 类型的主要取值如下:

    • QIODevice::ReadOnly:以只读方式打开文件,用于载入文件。
    • QIODevice::WriteOnly:以只写方式打开文件,用于保存文件。
    • QIODevice::ReadWrite:以读写方式打开。
    • QIODevice::Append:以添加模式打开,新写入文件的数据添加到文件尾部。
    • QIODevice::Truncate:以截取方式打开文件,文件原有的内容全部被删除。
    • QIODevice::Text:以文本方式打开文件,读取时“\n”被自动翻译为换行符,写入时字符串结束符会自动翻译为系统平台的编码,如 Windows 平台下是“\r\n”。

    读文件显示到QPlaintextEdit上

        QString fileName = "test.txt";
    
        QFile file(fileName);
    
        //文件不存在
        if (!file.exists())
            return false;
        if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
            return false;
    
        //设置QPlaintextEdit显示结果
        ui->plaintextEdit->setPlainText(file.readAll());
    
        file.close();

    QPlaintextEdit上写文件到本地

        QString fileName = "save.txt";
    
        QFile file(fileName);
    
        if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
          return false;
    
        //整个内容作为字符串
        QString str=ui->palinTextEdit->toPlainText();
    
        //转换为字节数组
        QByteArray  strBytes=str.toUtf8();
    
        //写入文件
        file.write(strBytes,strBytes.length());
    
        //关闭
        file.close();