一、文件操作类概述
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() | 退出应用程序 |
范例:文章来源地址https://www.toymoban.com/news/detail-661055.html
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类
用于获取文件的各种信息。
常用的接口函数如下:
范例:
void Dialog::on_pushButton_115_clicked()
{
//isFile()函数的实现
showbtninfo(sender());
QString sous=ui->EditFile->text();
//先判断文件是否真的存在
QFile file(sous);
if(!file.exists(sous))
return;
QFileInfo fileinfo(sous);
if(fileinfo.isFile())
ui->plainTextEdit->appendPlainText(fileinfo.fileName()+"是一个文件");
else
ui->plainTextEdit->appendPlainText("文件不存在");
}
void Dialog::on_pushButton_112_clicked()
{
//birthTime()函数的实现
showbtninfo(sender());
QString sous=ui->EditFile->text();//拿到editFile的名称
QFileInfo fileinfo(sous);
QDateTime DTime=fileinfo.birthTime();
ui->plainTextEdit->appendPlainText("文件创建时间为:"+DTime.toString("yyyy-MM-dd hh:mm:ss"));
}
2.4 QDir类
主要的静态函数:
部分接口函数:
需要传递QDir::Filter枚举类型的参数以获取不同的结果(枚举类型的常用取值如下)或者使用过滤器返回特定类型的文件、子目录名文章来源:https://www.toymoban.com/news/detail-661055.html
- QDir::AllDirs:列出所有目录名
- QDir::Files:列出所有文件
- QDir::Drives:列出所有盘符(Unix系统下无效)
- QDir::NoDotAndDotDot:不列出特殊的符号,如".",".."
- QDir::AllEntries:列出目录下所有项目
范例:
void Dialog::on_pushButton_42_clicked()
{
//静态函数drives()
showbtninfo(sender());
QFileInfoList drivelist=QDir::drives();//返回驱动器列表
for(int i=0;i<drivelist.size();i++)
{
ui->plainTextEdit->appendPlainText(drivelist.at(i).path());
}
ui->plainTextEdit->appendPlainText("\n");
}
void Dialog::on_pushButton_51_clicked()
{
//mkdir()
showbtninfo(sender());
QString subDir="subDir1";//准备一个目录名
QDir dir(ui->EditDir->text());
bool ok=dir.mkdir(subDir);//在目录dir中创建一个新的目录subDir1
if(ok)
ui->plainTextEdit->appendPlainText("所选目录下成功新建一个目录 "+subDir+"\n");
else
ui->plainTextEdit->appendPlainText("目录创建失败\n");
}
void Dialog::on_pushButton_53_clicked()
{
//setpath()
showbtninfo(sender());
QString curDir=QDir::currentPath();
QDir lastDir(curDir);
ui->plainTextEdit->appendPlainText("选择目录之前:"+lastDir.absolutePath()+"\n");
QString aDir=QFileDialog::getExistingDirectory(this,"选择一个目录",curDir,QFileDialog::ShowDirsOnly);
if(aDir.isEmpty())
return;
ui->EditDir->setText(aDir);//将打开的文件名写入到editDir中
lastDir.setPath(aDir);
ui->plainTextEdit->appendPlainText("选择目录之后:"+lastDir.absolutePath());
ui->plainTextEdit->appendPlainText("\n");
}
到了这里,关于Qt文件系统操作和文件的读写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!