qt深入解析

1.Qt IO

设备类型:

  • 顺序存储设备:如网卡。。
  • 随机存储设备:如.txt..

Qt中IO设备继承图

 Qt中的文件系统

通用开发库,跨平台

QIODevice IO父类,提供字节块读写通用操作和基本接口

QFileDevice提供文件操作通用实现

QFile访问本地文件或嵌入资源

QTemporayFile创建和访问本地系统的临时文件

QBuffer读写QbyteArray,内存文件

QProcess运行外部程序,处理进程间通讯

QAbstractSocket所有套接字类的父类

QTcpSocket TCP协议网络数据传输

QUdpSocket 传输UDP报文

QSslSocket 使用SSL/TSL传输数据

同步IO/异步IO

异步IO也就是重叠(overlap)IO

QIODevice

QIODevice是抽象的,不能被实例化,提供抽象接口

 

QIODevice是区分两种设备的:随机访问设备,顺序设备

随机访问设备:支持通过()查找任意位置。文件当前位置通过pos()获取。例:QFile,QBuffer

顺序设备:不支持寻找任意位置。数据必须在一次传递中获取。pos()和size()不适用于顺序设备。例:QTcpSocket,QProcess

可以使用isSequential()来确定设备类型

 

数据可用时,QIODevice发出readyRead()。可以使用bytesAvailable()确定可供阅读的字节数。

QIODevice向设备写入数据fwrite时会发出bytesWritten()信号。使用bytesToWrite()来确定等待写入的当前数据大小。

QIODevice某些子类是异步的,如QTcpSocket,QProcess,诸如write()和read()之类的输入输出函数总是立即返回的。

 

QIODevice提供了一些功能,允许您立即执行这些操作,同事阻塞调用线程,而不需要进入时间循环。

waitForReadyRead() 在调用线程中暂停操作,知道新的数据可用来读取

waitForBytesWritten() 在调用线程中挂起操作,直到将数据的一个有效负载写入到设备

waiFor....() QIODevice的子类实现特定于设备的操作的阻塞函数

QDir

获取当前目录

[static] QString QDir::currentPath() //取得当前项目所在的目录

[static] QString QCoreApplication::applicationDirPath() //取得exe文件(在windows系统中)所在的目录

切换到当前文件父目录

bool QDir::cdUp()

 absolutePath()获取绝对路径

得到所有文件信息

QStringList:: QDir::entryList()//返回该目录下所有文件及文件夹名字的列表

QFileInfoList QDir::entryInfoList()//返回该目录下所有文件和文件夹信息的列表

 

QDir mDir("D:/qttest")

mDir.exits();//文件是否存在

mDir.absolutePath("a.txt")//返回指定目录下指定文件的绝对路径

mDir.dirName();//剥离掉路径,只返回目录的名字

 

QFile

bool QFile::open(OpenMode mode)

参数:决定文件以何种方式打开

QIODevice::ReadOnly,WriteOnly(只写,打开时原内容清空,文件不存在则创建),ReadWrite,Append,Truncate(重写方式打开,文件原有内容全部清空),Text(文本方式打开'\n'翻译为换行符,写入时,将行结束符转换成本地格式)

close();//关闭文件

read();//读文件,参数为读取的长度大小(必填)fread

readLine();//读取一行

readAll();//读取所有

write();//向文件中写入数据

atEnd();//判断是否到达文件尾

seek();//将文件指针定位到指定位置处

pos();//获取文件指针当前位置

 

bool QFile::copy(const QString &newName)//文件复制

bool exits() const;//文件是否存在

bool link(const QString &linkName)//创建连接(快捷方式)

bool remove()//删除一个文件

bool rename(const QString &newName)//重命名

void setFileName(const QString &name) //设置文件名

//静态成员

bool copy(const QString &fileName, const QString &newName)

bool setPermissions(const QString &fileName, Permission permissions)

Permissions permissions(const QString &fileName)

 

使用流程:

1.QFile创建一个文件对象

2.open()打开这个文件

3.可以使用QFileInfo获取有关该文件的信息

或者进行读写操作

QFileInfo有很多函数:

isDir();

isExecutable()//是否是可执行文件

baseName()//直接获得文件名

completeBaseName()//获取完整文件名

suffix()//直接获取文件后缀名

completeSuffix()//获取完整的文件后缀

posted @ 2024-10-13 21:53  肆空界  阅读(15)  评论(0编辑  收藏  举报