Qt学习之路21--文件操作

Qt中IO操作的处理方式

  • Qt通过统一的接口简化了文件与外部设备的操作方式,秉承了Linux下的“一切皆文件”。
  • Qt中的文件操作与外部设备操作相同,文件操作就是一种特殊的外部设备,都属于IO操作。
  • IO设备操作四部曲:打开设备、读设备数据、写设备数据、关闭设备。
    • 打开设备 bool open(OpenMode mode)
    • 读取数据QByteArray read(qint64 maxsize)
    • 写入数据qint64 write(const QByteArray &bytearray)
    • 关闭设备 void close()
  • IO操作的本质就是读写一段连续的存储空间。

Qt中IO设备类型:

  • 顺序存取设备:只能从头开始顺序的读写数据,不能指定数据的读写位置,比如对串口编程。
  • 随机存取设备:可以定位到任意位置进行数据的读写。

QFile文件读写

QFile file(QString("C:/Users/song8023/Desktop/test.txt"));//定义一个文件QFile类对象时需要指定路径和名字,

if(file.open(QIODevice::WriteOnly | QIODevice::Text))//以只写的方式打开文件时,名字不存在则生成,存在则先删掉原先的再重写
 {
     file.write("Hello World\n");
     file.write("I Love You");
     file.close();
 }

 if(file.open(QIODevice::ReadOnly | QIODevice::Text))
 {
     QByteArray array = file.readAll();
     QString s(array);
     qDebug() << s;
     file.close();
 }

更多尽在Qt帮助文档
这里写图片描述

QFileInfo文件属性

  • QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的访问权限,是否是目录或符合链接等等。并且,通过这个类,可以修改文件的大小和最后修改时间、读取时间。同时,QFileInfo类也可以用来取到Qt 资源的相关信息。
  • QFileInfo既可以表示绝对路径,也可以表示相对路径的文件。其中,绝对路径就是以”/”开始的路径(或者在Windows系统上就是以某个盘符开始的路径)。相对路径就是相对于当前目录的一个文件或目录。我们在开发中,可以使用给类的成员函数isRelative() 来判断一个QFileInfo表示的是一个相对路径还是一个绝对路径。也可以使用makeAbsolute()将一个相对路径转换为一个绝对路径。
QFile file(QString("C:/Users/song8023/Desktop/test.txt"));
QFileInfo info(file);

qDebug() << endl;
qDebug() << info.fileName();//文件名
qDebug() << info.filePath();//文件路径
qDebug() << info.exists();//文件是否存在
qDebug() << info.isFile();//文件或文件夹
qDebug() << info.isReadable();//是否可读
qDebug() << info.isWritable();//是否可写
qDebug() << info.created();//被创建时间
qDebug() << info.lastRead();//最近一次访问时间
qDebug() << info.lastModified();//最近一次修改时间
qDebug() << info.suffix();//文件后缀是什么
qDebug() << info.size();//文件大小

这里写图片描述
更多尽在Qt帮助文档

QTemporaryFile临时文件

  • QTemporaryFile继承自QFile
  • 通过该类可以安全的创建一个全局唯一的临时文件
  • 当临时文件对象销毁时对应的临时文件也会被销毁
  • 临时文件的打开方式是QIODevice::ReadWrite
  • 临时文件常用于大数据传递和进程间通信的场合
    • 实现进程间通信:从A进程中往一个文件中写数据,然后打开B进程,从文件中读取数据就能将A想要传输的数据发送到B进程,就是可以通过文件进行进程间通信
  • 这是一个重要的技术,能避免存储在临时文件的应用程序数据损坏。
    在调用close()之后重新打开QTemporaryFile是安全的,只要临时文件对象还没有销毁,临时文件就一直存在并由QTemporaryFile内部保持打开。
QTemporaryFile Tempfile;
QFileInfo info(Tempfile);

if(Tempfile.open())
{
   Tempfile.write("Hello World");
   Tempfile.close();
}
if(Tempfile.open())
{
   QByteArray array = Tempfile.readAll();
   QString s(array);
   qDebug() << s;
   Tempfile.close();
}
qDebug() << info.fileName();
qDebug() << info.filePath();

这里写图片描述

小结

  • Qt通过统一的方式读写外部设备和文件
  • Qt中的设备类型分为顺序存取和随机存取两种
  • QFile提供文件相关操作
  • QFileInfo提供文件属性相关操作
  • QTemporaryFile提供临时文件操作
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值