一.文本流和数据流
A.Qt中讲文件类型分为2大类 1.文本文件--文件内容是可读的文本字符 2.数据文件--文件内容是直接的二进制数据 QFile直接支持文本文件和数据文件的读写 B.Qt提供了辅助类简化了文本文件/数据文件的读写 1.QTextStream--写入的数据全部转换为可读文本 2.QDataStream--写入的数据根据类型转换为二进制数据 IO设备辅助类的使用方式 不同的Qt版本的数据流文件格式可能不同 **void setVersion(int v)//设置的版本号 int version()const//获取读写版本号 ** 代码示例
#include <QCoreApplication>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("C:/Users/59673/Desktop/test.hex");
if( file.open(QIODevice::WriteOnly) )
{
QString dt = "mylovedandanxiaohai";
double value = 3.14;
file.write(dt.toStdString().c_str());
file.write(reinterpret_cast<char*>(&value), sizeof(value));
file.close();
}
if( file.open(QIODevice::ReadOnly) )
{
QString dt = "";
double value = 0;
dt = QString(file.read(19));
file.read(reinterpret_cast<char*>(&value), sizeof(value));
file.close();
qDebug() << dt;
qDebug() << value;
}
return a.exec();
}
运行结果
二.缓冲区操作与目录操作
A.Qt中缓冲区的概念 1.缓冲区的本质为一段连续的存储空间 2.QBuffer是Qt中缓冲区相关的类 3.在Qt中可以将缓冲区看作一种特殊的IO设备 4.文件流辅助类可以直接用于操作缓冲区 QBuffer缓冲区的使用方式 代码示例
#include <QtCore/QCoreApplication>
#include <QBuffer>
#include <QByteArray>
#include <QDataStream>
#include <QDebug>
void write_buffer(int type, QBuffer& buffer)
{
if( buffer.open(QIODevice::WriteOnly) )
{
QDataStream out(&buffer);
out << type;
if( type == 0 )
{
out << QString("mylove");
out << QString("3.1415");
}
else if( type == 1 )
{
out << 3;
out << 1415;
}
else if( type == 2 )
{
out << 3.1415;
}
buffer.close();
}
}
void read_buffer(QBuffer& buffer)
{
if( buffer.open(QIODevice::ReadOnly) )
{
int type = -1;
QDataStream in(&buffer);
in >> type;
if( type == 0 )
{
QString dt = "";
QString pi = "";
in >> dt;
in >> pi;
qDebug() << dt;
qDebug() << pi;
}
else if( type == 1 )
{
int a = 0;
int b = 0;
in >> a;
in >> b;
qDebug() << a;
qDebug() << b;
}
else if( type == 2 )
{
double pi = 0;
in >> pi;
qDebug() << pi;
}
buffer.close();
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QByteArray array;
QBuffer buffer(&array);
write_buffer(0, buffer);
read_buffer(buffer);
return a.exec();
}
运行结果 B.QBuffer缓冲区的使用场合 1.在线程间进行不同类型的数据传递 2.缓存外部设备中的数据返回 3.数据读取速度小于数据写入速度 C.QDir是Qt中功能强大的目录操作类 1.Qt中的目录分隔符统一使用'/' 2.QDir能够对目录进行任意的操作--创建、删除、重命名 3.QDir能够获取指定目录中的所有条目--文件和文件夹 4.QDir能够使用过滤字符串获取指定条目 5.QDir能够获取系统中的所有根目录 目录操作基础示例
C.QFileSystemWatcher用于监控文件和目录的状态变化 1.能够监控特定目录和文件的状态 2.能够同时对多个目录和文件进行监控 3.当目录或者文件发生改变时将触发信号 4.可以通过信号与槽的机制捕捉信号并作出响应