文件(文件基础知识)

输入/输出设备

  • QIODevice类是Qt中所有I\O设备的基础接口类!
  • 为QFile、QBuffer、QTcpSocket等支持读\写数据块的设备提供了一个抽象接口。
  • 所以QIODevice类是抽象类,无法被实例化,只是提供I\O功能

打开模式:

常量 描述
QIODevice::NotOpen 设备没有打开
QIODevice::ReadOnly 设备以只读方式打开,此时无法写入
QIODevice::WriteOnly 设备以只写方式打开,此时无法读取
QIODevice::ReadWrite 设备以读写方式打开
QIODevice::Append 设备以附加模式打开,所有的数据都将写入到文件的末尾
QIODevice::Truncate 如果可能,设备在打开前会被阻断,先前所有内容将丢失
QIODevice::Text 读取时,行结尾终止符会被转换为'\n'
写入时,行结尾终止符会被转换为本地编码,类win‘\r\n’
QIODevice::Unbuffered 绕过设备所有的缓冲区

 QIODevice会区别两种类型的设备:随机存取设备、顺序存储设备

随机存取设备支持使用seek()函数来定位到任意的位置。
文件中的当前位置可以使用pos()函数来获取。
常见类有QFile、QBuffer、QTemporaryFile等
顺序存储设备不支持定位到任意的位置,数据必须一次性读取。
pos()和size()函数无法使用
常见类有QTcpSocket、QUpdSocket、QProcess等


 

 

 

 

可以通过isSequential()函数进行判断
通过子类化QIODevice可以为自己的I/O设备提供相同的接口,只需要重新实现readData()、writeData()两个函数即可~

 

文件级操作

QFile

QFile类提供了一个用于读/写文件的接口,可用于读/写:文本文件、二进制文件、Qt资源的I/O设备

一般在构建QFile对象时指定文件名,当然也可以使用setFileName()在其他任何时间进行设置。
无论哪种操作系统,文件名路径中的文件分隔符都需要使用‘/’
常见的一些应用在文件的函数

open() 打开
close() 关闭
flush() 刷新
exists() 检查文件是否存在
remove() 删除一个文件
size()获取文件的大小
seek() 定位到文件的任意位置
pos() 获取当前的位置
atEnd() 判断是否达到了文件末尾

文件的数据读/写一般使用QDataStream、QTextStream来完成。
 

QFileInfo

QFileInfo类提供了与系统无关的文件信息,包括:文件名称、文件系统所在路径、文件访问权限、最近一次修改/读取时间、Qt资源等。
常用函数:

isRelative() 判断一个QFileInfo对象使用的是相对路径还是绝对路径 setFile() 设置QFileInfo指向文件
makeAbsolute() 将一个相对路径转换为绝对路径 exists() 查看文件是否存在
size() 获取文件大小 isFile() 判断文件类型
isDir() 判断是否为有效路径 isSymLink() 判断是否是符号链接连接
symLinkTarget() 函数返回符号链接指向的文件名称 path() 获取文件路径
fileName() 获取文件名 baseName() 获取文件名基本名称
suffix() 获取文件名的后缀。 completeSuffix() 获取文件名中的基本名称。
created() 获取文件的日期 isReadable()
isWritable()
isExecutable()
获取访问权限
owner()
ownerId()
group()
groupId()
获取文件所有权 permission() 将文件的访问权限或所有权一次性读取出来。

QTemporaryFile

  • QTemporaryFile类是一个用来操作临时文件的I/O设备。
  • 可以安全的创建一个唯一的临时文件!
  • 调用open()函数便会创建一个唯一的临时文件。
  • 当销毁QTemporaryFile对象时,该文件会被自动删除掉
  • 通过QDir::temPath()获取临时文件生成的临时目录路径

常用的使用格式:

QTemporaryFile file;
if(file.open())
{
        //进行对临文件的相关操作
}

 

参考:

不二如是:https://fishc.com.cn/forum.php?mod=viewthread&tid=78131&ctid=447

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sssnial-jz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值