(十九)Qt中的文件操作

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实验分析教程》创作

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值