本文介绍Qt文件操作。
Qt应用程序中经常会涉及到对文件的操作。Qt操作文件主要有2种方式:1)通过QFile直接操作;2)通过QTextStream,QDataStream操作。操作的文件类型有2种:1)文本文件;2)二进制文件。下面对其作相应的介绍。
QFile直接操作是比较原始的操作,类似与C++标准库中的read()和write()操作。QFile提供了相应的方法对文件进行打开,读写操作,详见Qt帮助文档。
读写文本文件参考源代码如下。
void MainWindow::openFile()
{
QFile file("./test.txt");
char *str = new char [100];
memset(str, 0, 100);
if (file.open(QIODevice::ReadWrite)) {
file.write("This is a test");
file.flush();
file.close();
}
if (file.open(QIODevice::ReadWrite)) {
file.read(str, 100);
qDebug() << str;
}
delete [] str;
}
读写二进制文件和读写文本文件类似,参考源代码如下。
void MainWindow::openFile()
{
QFile file("./test.txt");
QByteArray arr1;
QByteArray arr2;
arr1.append(0x01);
arr1.append(0x02);
arr1.append(0x03);
arr1.append(0x04);
if (file.open(QIODevice::ReadWrite)) {
file.write(arr1);
file.flush();
file.close();
}
if (file.open(QIODevice::ReadWrite)) {
arr2 = file.readAll();
for (int i = 0; i < arr2.length(); i++) {
qDebug() << QString::asprintf("%02x", arr2.at(i));
file.close();
}
}
}
通过QFile直接对文件操作比较繁琐,Qt提供了QTextStream和QDataStream类分别对文本文件和二进制文件进行操作,使用起来比较方便。
读写文本文件使用QTextStream类,参考源代码如下。
void MainWindow::openFile()
{
QFile file("./test.txt");
QTextStream textStream(&file);
QString str;
if (file.open(QIODevice::ReadWrite)) {
textStream << "This is a test";
file.flush();
file.close();
}
if (file.open(QIODevice::ReadWrite)) {
str = textStream.readAll();
qDebug() << str;
}
}
读写二进制文件使用QDataStream类,参考源代码如下。
void MainWindow::openFile()
{
QFile file("./test.txt");
QDataStream dataStream(&file);
char buf1[4] = {0x01, 0x02, 0x03, 0x04};
char buf2[4] = {0};
if (file.open(QIODevice::ReadWrite)) {
dataStream.writeRawData(&buf1[0], 4);
file.flush();
file.close();
}
if (file.open(QIODevice::ReadWrite)) {
dataStream.readRawData(&buf2[0], 4);
for (int i = 0; i < 4; i++) {
qDebug() << QString::asprintf("%02x", buf2[i]);
}
}
}
总结,本文介绍了Qt文件操作。