Qt 中 IO 操作的处理方式
Qt 通过统一的接口简化了文件与外部设备的操作方式
Qt 中的文件被看作一种特殊的外部设备
Qt 中的文件操作与外部设备的操作相同
IO 操作中的关键函数接口
打开设备:bool open(OpenMode mode)
读取数据:QByteArray read(qint64 maxSize)
写入数据:qint64 write(const QByteArray& byteArray)
关闭设备:void close()
Qt 中 IO 设备的类型
顺序存储设备
- 只能从头开始顺序的读写,不能指定数据的读写位置
随机存取设备
- 可以定位到任意的位置进行数据的读写 (seek function)
Qt 中 IO 设备的继承层次图
QFile 是 Qt 中用于文件操作的类
QFile 对象对应到计算机上的一个文件
QFileInfo 类用于读取文件属性信息 ![](https://img-blog.csdnimg.cn/7efefeb52fe34fc5988c9b0f15073b07.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfNTI0ODQwOTM=,size_20,color_FFFFFF,t_70,g_se,x_16)
文件操作初体验
void write(QString path)
{
QFile file(path);
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
file.write("hello world\n");
file.write("liujie");
file.close();
}
}
void read(QString path)
{
QFile file(path);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QByteArray ba = file.readLine();
QString s(ba);
qDebug() << s;
file.close();
}
}
void info(QString path)
{
QFile file(path);
QFileInfo finfo(file);
qDebug() << finfo.isFile();
qDebug() << finfo.isReadable();
qDebug() << finfo.isWritable();
qDebug() << finfo.path();
qDebug() << finfo.lastModified();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
write("C:/Users/Administrator/Desktop/test.txt");
read("C:/Users/Administrator/Desktop/test.txt");
info("C:/Users/Administrator/Desktop/test.txt");
return a.exec();
}
执行结果如下图所示
Qt 中提供了临时文件操作类 QTemporaryFile
安全地创建一个全局唯一的临时文件
当对象销毁时对应的临时文件将被删除
临时文件的打开方式为 QIODevice::ReadWrite
临时文件常用于大数据传递或进程间通信的场合
临时文件的使用
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTemporaryFile file;
if(file.open())
{
QFileInfo info(file);
file.write("hello world");
file.close();
qDebug() << info.isFile();
qDebug() << info.path();
qDebug() << info.fileName();
}
return a.exec();
}
运行结果如下图所示