Qt5--文件操作(4)读写mp3文件

目标

 把一个20秒的mp3文件以256字节一次的方式读出来,然后再以256字节一次的方式写到一个新的空白文件中去。

QFile file("D:\\Output\\Qt5.11.2\\File\\untitled\\Alan Walker.mp3");
if (!file.open(QIODevice::ReadOnly | QIODevice::text))
   {
       qDebug() << "Open file failed.";
       return -1;
   }

 使用上面这种文件打开方式,新文件比老文件少了几个字节,而且新文件无法播放!通过对比发现,新文件随机性的减少了“0x00”。
 使用以下这种方式打开文件,写入的新文件可以播放,目的达到。

QFile file("D:\\Output\\Qt5.11.2\\File\\untitled\\Alan Walker.mp3");
if (!file.open(QIODevice::ReadOnly | QIODevice::Unbuffered))
   {
       qDebug() << "Open file failed.";
       return -1;
   }

 完整代码。

#include "mainwindow.h"
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    char mp3file[256] = {0};
    qint64 sum = 0;

    QFile file("D:\\Output\\Qt5.11.2\\File\\untitled\\Alan Walker.mp3");
    if (!file.open(QIODevice::ReadOnly | QIODevice::Unbuffered))
    {
        qDebug() << "Open file failed.";
        return -1;
    } else {

        QFile file2("D:\\Output\\Qt5.11.2\\File\\untitled\\Alan.mp3");
        if (!file2.open(QIODevice::WriteOnly))
        {
            qDebug() << "Open file failed.";
            return -1;
        } else {
            while (!file.atEnd())
            {
                sum++;
                file.read(mp3file, 256);
                file2.write(mp3file, 256);
//                qDebug() << mp3file;
            }
        }
        qDebug() << sum;
        file.close();
        file2.close();
    }
    return a.exec();
}

你可能感兴趣的:(Qt)