QT版本:5.15.2
需要包含的头文件如下
#include<qdebug.h>
#include<qdir.h>
#include<qtextedit.h>
一、文件的查找
//使用QTextEdirt输出信息
QTextEdit* pText01 = new QTextEdit(this);
pText01->setGeometry(50, 50, 500, 300);
pText01->insertPlainText(QStringLiteral("当前路径: %1\n").arg(QDir::currentPath()));
//初始化QDir路径
QDir pDirSearch(QDir::currentPath());
QStringList pStrList;
//1.1 搜索所有文件与文件夹
pStrList = pDirSearch.entryList();
pText01->insertPlainText(QStringLiteral("--所有文件与文件夹--\n"));
for each (QString var in pStrList)
{
pText01->insertPlainText(QStringLiteral(" %1\n").arg(var));
}
pStrList.clear();
//1.2 搜索所有文件夹
pStrList = pDirSearch.entryList(QDir::Filter::AllDirs);
pText01->insertPlainText(QStringLiteral("--所有文件夹--\n"));
for each (QString var in pStrList)
{
pText01->insertPlainText(QStringLiteral(" %1\n").arg(var));
}
pStrList.clear();
//1.3 搜索所有文件
pStrList = pDirSearch.entryList(QDir::Filter::Files);
pText01->insertPlainText(QStringLiteral("--所有文件--\n"));
for each (QString var in pStrList)
{
pText01->insertPlainText(QStringLiteral(" %1\n").arg(var));
}
pStrList.clear();
//1.4 搜索所有txt后缀文件
pStrList = pDirSearch.entryList(QStringList("*.txt"), QDir::Filter::Files, QDir::SortFlag::Size);
pText01->insertPlainText(QStringLiteral("--所有.txt文件--\n"));
for each (QString var in pStrList)
{
pText01->insertPlainText(QStringLiteral(" %1\n").arg(var));
}
pStrList.clear();
软件目录下的文件如下
搜索到的文件如下
二、文件的增改删
这里创建多级文件夹并不需要自己写递归函数,而是直接指定路径,再mkpath即可
//2.1 创建多级文件夹
pText01->insertPlainText(QStringLiteral("--创建文件夹--\n"));
QDir pDirCreate(QStringLiteral("./子文件夹/QWER/123"));
if (!pDirCreate.exists())
{
pText01->insertPlainText(QStringLiteral(" 创建文件夹成功!\n"));
pDirCreate.mkpath("./");
}
//2.2 重命名文件夹
pText01->insertPlainText(QStringLiteral("--重命名文件夹--\n"));
QDir pDirRename(QStringLiteral("./子文件夹/QWER/123"));
if (pDirRename.exists())
{
QString oldF = pDirRename.absolutePath() + "/";
QString newF = QStringLiteral("../456");
bool bRet = pDirRename.rename(oldF, newF);
if(bRet)
pText01->insertPlainText(QStringLiteral(" 重命名文件夹成功!\n"));
}
//2.3 删除文件夹
pText01->insertPlainText(QStringLiteral("--删除文件夹--\n"));
QDir pDirDelete(QStringLiteral("./子文件夹/QWER/456"));
if (!pDirDelete.exists())
{
pText01->insertPlainText(QStringLiteral(" 删除文件夹失败,文件夹不存在!\n"));
}
else
{
pDirDelete.rmpath("./");
pText01->insertPlainText(QStringLiteral(" 删除文件夹成功!\n"));
}
执行结果如下