Qt中的I/O操作
1、Qt通过统一的接口简化了文件与外部设备的操作方式
2、Qt中的文件被看作一种特殊的外部设备
3、Qt中的文件操作与外部操作相同(Qt通过统一的方式读写文件和外部设备)
4、QIODevice类是所有输入输出IO类的基类,为IO类提供了统一的调用接口
I/O操作中的关键函数接口(I/O操作的本质:连续存储空间的数据读写)
1、打开设备:
virtual bool | open ( OpenMode mode ) |
2、读取数据:
QByteArray | read ( qint64 maxSize ) |
3、写入数据:
qint64 | write ( const QByteArray & byteArray ) |
4、关闭设备:
virtual void | close () |
Qt中I/O设备的类型
1、顺序存储设备:只能从头开始顺序的读写数据,不能指定数据的读写位置(如串口)
2、随机存取设备:可以定位到任意的位置进行数据的读写(通过seek()寻找任意位置),如文件
Qt中I/O设备的继承层次图
Qt中的文件操作
1、QFile是Qt中用于文件操作的类
2、QFile对象对应到计算机上的一个文件
3、QFileInfo类用于读取文件属性信息
QFileInfo类常用成员函数:
QDateTime | created () const | |
bool | exists () const | |
QString | fileName () const | |
bool | isFile () const | |
bool | isReadable () const | |
bool | isWritable () const | |
QDateTime | lastModified () const | |
QDateTime | lastRead () const | |
QString | path () const | |
QString | suffix () const | |
qint64 | size () const |
#include <QtCore/QCoreApplication>
#include <QFile>
#include <QByteArray>
#include <QDebug>
#include <QFileInfo>
#include <QDateTime>
void write(QString f)
{
QFile file(f); //构建一个文件对象代表存储设备中的文件
if( file.open(QIODevice::WriteOnly | QIODevice::Text) ) //用只写的方式打开Text文件 注意此处使用的是QIODevice:: 而不是QFile::
{
file.write("Good\n");
file.write("Morning\n");
file.close();
} //打开、读写、关闭
}
void read(QString f)
{
QFile file(f);
if( file.open(QIODevice::ReadOnly | QIODevice::Text) )
{
QByteArray ba = file.readLine();
QString s(ba);
qDebug() << s;
file.close();
} //打开、读写、关闭
}
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(); //创建时间
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/hp/Desktop/test.txt");
read("C:/Users/hp/Desktop/test.txt");
info("C:/Users/hp/Desktop/test.txt");
return a.exec();
}
Qt中的临时文件操作类:QTemporaryFile
1、安全地创建一个全局唯一的临时文件(存放在系统的临时文件目录下)
2、当对象销毁后,对应的临时文件将随后被删除(具体的删除时机由操作系统决定)
3、临时文件的打开方式己被指定为:QIODevic::ReadWrite
4、临时文件继承于QFile,常用于大数据传据或者进程间通信的场合。
#include <QtCore/QCoreApplication>
#include <QTemporaryFile>
#include <QFileInfo>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTemporaryFile tempFile; //临时文件对象tempFile,伴随着对象创建的还有磁盘里的一个临时文件
if( tempFile.open() ) //注意此处的open函数与QFile的open成员函数的区别,临时文件的打开方式己被指定为:QIODevic::ReadWrite
{
tempFile.write("D.T.Software");
tempFile.close();
}
QFileInfo info(tempFile);
qDebug() << info.isFile();
qDebug() << info.path();
qDebug() << info.fileName();
return a.exec();
}
声明:
此文根据 狄泰学院唐老师的《QT实验分析教程》创作