1、Qt中的IO操作
Qt中IO操作的处理方式
-Qt通过统一的接口简化了文件与外部设备的操作方式
-Qt中的文件被看作一种特殊的外部设备
-Qt中的文件操作与外部设备的操作相同
IO操作中的关键函数接口
-打开设备: bool open(OpenMode mode)
-读取数据 QByteArray read(qint64 maxSize)
-写入数据 qint64 write(const QByteArray& byteArray)
-关闭设备: void close()
IO操作的本质:连续存储空间的数据读写 (内存,硬盘、串口、USB口等)
Qt中IO设备的类型
-顺序存取设备
只能从头开始顺序的读写数据,不能指定数据的读写位置
-随机存取设备
可以定位到任意的位置进行数据的读写(seek function)
Qt中IO设备的继承层次图
2、Qt中的文件操作
QFile是Qt中用于文件操作的类
QFile对象对应到计算机上的一个文件
QFilelnfo类用于读取文件属性信息
3、编程实验
文件操作初体验 32-1.pro
#include <QtCore/QCoreApplication>
#include <QFile>
#include <QByteArray>
#include <QFileInfo>
#include <QDateTime>
#include <QDebug>
void write(QString f)
{
QFile file(f);
if(file.open(QIODevice::WriteOnly | QIODevice::Text))
{
file.write("QQ:1483306601\n");
file.write("From: Nyist\n");
file.close();
}
}
void read(QString f)
{
QFile file(f);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
QByteArray ba = file.readAll();
QString s(ba);
qDebug() << s;
}
}
void info(QString f)
{
QFile file(f);
QFileInfo info(file);
qDebug() << info.exists();
qDebug() << info.isFile();
qDebug() << info.isReadable();
qDebug() << info.isWritable();
qDebug() << info.created();//使用QDateTime类
qDebug() << info.lastRead();
qDebug() << info.lastModified();
qDebug() << info.path();
qDebug() << info.fileName();
qDebug() << info.suffix();
qDebug() << info.size();
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
//write("C:\\Users\\wss\\Desktop\\test.text");
//write("C:/Users/wss/Desktop/test.text");
//read("C:/Users/wss/Desktop/test.text");
info("C:/Users/wss/Desktop/test.text");
return a.exec();
}
4、Qt中的文件操作
Qt中提供了临时文件操作类QTemporaryFile
-安全地创建一个全局唯一的临时文件
-当对象销毁时对应的临时文件将被删除
-临时文件的打开方式为QIODevice::ReadWrite (默认)
-临时文件常用于大数据传递或者进程间通信的场合
5、编程实验
临时文件的使用 31-2.pro
#include <QtCore/QCoreApplication>
#include <QTemporaryFile>
#include <QFileInfo>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTemporaryFile tempFile;
if( tempFile.open() )
{
tempFile.write("This is a temporary file\n");
tempFile.close();
}
QFileInfo info(tempFile);
qDebug() << info.isFile();
qDebug() << info.path();
qDebug() << info.fileName();
return a.exec();
}
6、小结
Qt通过统一的方式读写文件和外部设备
Qt中IO设备的类型分为顺序存取和随机存取两种
QFile提供了文件操作相关的方法
QFilelnfo提供了读取文件属性相关的方法
Qt中提供了临时文件操作类QTemporaryFile