一、文件操作类概述
QIODevice:所有输入输出设备的基础类
- QFile:用于文件操作和文件数据读写的类
- QSaveFile:用于安全保存文件的类
- QTemporaryFile:用于创建临时文件的类
- QTcpSocket和QUdpSocket:分别实现了TCP和UDP的类
- QSerialPort:实现串口通信的类
- QBluetoothSocket:用于蓝牙通信的类
- QProcess:用于启动外部程序,并且可以给程序传递参数
- QBuffer:以一个QByteArray对象作为数据缓冲区,将QByteArray对象作为I/O设备来读写
二、目录和文件操作
- QCoreApplication:可提取应用程序路径、重命名等信息:QT QCoreApplication 类_qcoreapplication 退出_hongdou9a9的博客-CSDN博客
- QFile:可进行文件的复制、删除、重命名等操作
- QFileInfo:用于获取文件的各种信息,如文件的路径,基本文件名,文件名后缀,文件大小等
- QDir:用于目录i信息获取和目录操作,如新建、获取。删除目录下的文件或子目录等
- QTemporaryDir:用于创建临时目录,临时目录可在使用后自动删除
- QTemporaryFile:用于创建临时文件,临时文件可在使用后自动删除
- QFileSystenWatcher:用于监视设定的目录和文件,当所监视的目录或文件出现复制、重命名、删除等操作时会发射出出相应的信号
2.1 QCoreApplication类
QCoreApplication与应用程序信息相关的几个静态函数
函数原型 | 功能 |
QString applicationDirPath() | 返回程序可执行文件所在路径 |
QString applicationFilePath() | 返回应用程序的带有路径的完整文件名 |
QString applicationName() | 返回应用程序名称,默认是无后缀的可执行文件名 |
QString setApplicationName(QString &application) | 设置应用程序名称,替代默认的应用程序名称 |
QStringList libraryPaths() | 返回一个字符串列表,其是应用程序动态加载库文件时搜索的目录列表 |
void addLibraryPath(QString &path) | 将一个路径添加到应用程序的库搜索目录列表中 |
void setOrganizationName(QString &orgName) | 为应用程序设置一个组织名 |
QString OrganizationName() | 返回应用程序的组织名 |
void exit() | 退出应用程序 |
范例:
void Dialog::on_pushButton_5_clicked()
{
showbtninfo(sender());
QStringList strList=QCoreApplication::libraryPaths();
for(auto item:strList)
ui->plainTextEdit->appendPlainText(item);
ui->plainTextEdit->appendPlainText("\n");
}
2.2 QFile类
[QT_032]Qt学习之基本文件读写QFile_qfile 读取文件_天空之城8020的博客-CSDN博客https://blog.csdn.net/kongcheng253/article/details/128756662QFile类除了可以进行文件的读写,还有一些静态函数和接口函数可用于文件操作
QFile的静态函数:
函数原型 | 功能 |
bool copy(QString &fileName,QString &newName) | 复制一个文件 |
bool rename(QString &oldName,QString &newName) | 重命名一个文件 |
bool remove(QString &fileName) | 删除一个文件 |
bool moveTo Trash(QString &fileName,QString *pathInTrash=nullptr) | 将一个文件移动到回收站 |
bool exists(QString &fileName) | 判断一个文件是否存在 |
bool link(QString &fileName,QString &linkName) | 创建文件连接,在window上就是创建快捷方式 |
QString symLinkTarget(QString &fileName) | 返回一个链接指向的绝对文件名或路径 |
bool setPermissions(QString&fileName, QFileDevice::Permissions permissions) | 设置一个文件的权限,权限是枚举类型QFileDevice::Permission的枚举值组合 |
QFileDevice::Permissions permissions(QString &fileName) | 返回文件的权限 |
范例:
//静态函数copy()代码实现
void Dialog::on_pushButton_8_clicked()
{
showbtninfo(sender());
QString sous=ui->EditFile->text();//拿到editFile的名称
QFileInfo fileinfo(sous);
QString newFile=fileinfo.path()+"/"+fileinfo.baseName()+"--副本"+fileinfo.suffix();
QFile::copy(sous,newFile);
ui->plainTextEdit->appendPlainText("源文件:"+sous);
ui->plainTextEdit->appendPlainText("副本:"+newFile+"\n");
}
void Dialog::on_pushButton_11_clicked()
{
//静态函数exists()
showbtninfo(sender());
QString sous=ui->EditFile->text();
bool the=QFile::exists(sous);//调用静态函数判断源文件sous是否存在
ui->plainTextEdit->appendPlainText(sous);//不管存不存在都可以输出资源名称
if(the)//若资源文件存在
ui->plainTextEdit->appendPlainText("存在");
else
ui->plainTextEdit->appendPlainText("不存在");
ui->plainTextEdit->appendPlainText("\n");
}
QFile的接口函数:
范例:
void Dialog::on_pushButton_14_clicked()
{
//成员函数copy()
showbtninfo(sender());
QString sous=ui->EditFile->text();//拿到editFile的名称
QFileInfo fileinfo(sous);
QString newFile=fileinfo.path()+"/"+fileinfo.baseName()+"--副本"+fileinfo.suffix();
QFile file(sous);
file.copy(newFile);
ui->plainTextEdit->appendPlainText("源文件:"+sous);
ui->plainTextEdit->appendPlainText("副本:"+newFile+"\n");
}
void Dialog::on_pushButton_16_clicked()
{
//成员函数exists()
showbtninfo(sender());
QString sous=ui->EditFile->text();
QFile file(sous);
bool the=file.exists(sous);//调用静态函数判断源文件sous是否存在
ui->plainTextEdit->appendPlainText(sous);//不管存不存在都可以输出资源名称
if(the)//若资源文件存在
ui->plainTextEdit->appendPlainText("存在");
else
ui->plainTextEdit->appendPlainText("不存在");
ui->plainTextEdit->appendPlainText("\n");
}
2.3 QFileInfo类
用于获取文件的各种信息。
常用的接口函数如下:
2.4 QDir类
主要的静态函数:
部分接口函数:
需要传递QDir::Filter枚举类型的参数以获取不同的结果(枚举类型的常用取值如下)或者使用过滤器返回特定类型的文件、子目录名
- QDir::AllDirs:列出所有目录名
- QDir::Files:列出所有文件
- QDir::Drives:列出所有盘符(Unix系统下无效)
- QDir::NoDotAndDotDot:不列出特殊的符号,如".",".."
- QDir::AllEntries:列出目录下所有项目