Qt5--文件操作(4)读写mp3文件
程序员文章站
2024-03-22 21:04:46
...
目标
把一个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 <QApplication>
#include <QFile>
#include <QFileInfo>
#include <QDebug>
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();
}