qt查找指定目录下的指定文件后缀是否存在
时间: 2023-12-26 12:04:56 浏览: 52
可以使用 QDir 类来查找指定目录下的指定文件后缀是否存在。以下是一个示例代码:
```cpp
QString dirPath = "your/directory/path";
QStringList nameFilters;
nameFilters << "*.txt"; // 指定要查找的文件后缀
QDir dir(dirPath);
QFileInfoList fileList = dir.entryInfoList(nameFilters, QDir::Files); // 获取指定目录下的所有指定后缀的文件
if (fileList.isEmpty()) {
qDebug() << "No matching files found.";
} else {
qDebug() << "Matching files found:";
foreach (QFileInfo fileInfo, fileList) {
qDebug() << fileInfo.fileName();
}
}
```
这段代码会在指定目录下查找所有后缀名为 ".txt" 的文件,并输出文件名。你可以根据需要修改参数和输出方式。
相关问题
qt查找指定目录下的指定文件是否存在
你可以使用QDir类和QFile类来实现查找指定目录下的指定文件是否存在。
首先,你需要创建一个QDir对象,指定要查找的目录路径。然后,你可以使用QDir::entryList()函数来获取目录下的所有文件和子目录。
接下来,遍历目录下的所有文件和子目录,如果是文件,使用QFile类的exists()函数来判断文件是否存在。如果是子目录,递归调用自己来查找子目录下的文件。
以下是示例代码:
```c++
#include <QCoreApplication>
#include <QDir>
#include <QFile>
#include <QDebug>
bool searchFile(const QString& path, const QString& fileName)
{
QDir dir(path);
if(!dir.exists()){
qWarning() << "Path does not exist:" << path;
return false;
}
dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
QFileInfoList list = dir.entryInfoList();
foreach(QFileInfo fileInfo, list){
if(fileInfo.isDir()){
QString subDir = fileInfo.absoluteFilePath();
if(searchFile(subDir, fileName)){
return true;
}
}else{
QString file = fileInfo.fileName();
if(file == fileName){
qDebug() << "File found:" << fileInfo.absoluteFilePath();
return true;
}
}
}
return false;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString path = "/path/to/search";
QString fileName = "file.txt";
if(searchFile(path, fileName)){
qDebug() << "File found!";
}else{
qDebug() << "File not found!";
}
return a.exec();
}
```
在上面的代码中,searchFile()函数用于查找指定目录下的指定文件。如果文件存在,函数返回true,否则返回false。函数中使用了递归来查找子目录下的文件。你可以将path和fileName替换为你要查找的目录和文件名。
QT 查找当前目录下指定类型的文件
你可以使用 QDir 类来查找当前目录下指定类型的文件。以下是一个示例代码:
```c++
#include <QDir>
#include <QStringList>
int main()
{
QDir dir(".");
QStringList filters;
filters << "*.txt"; // 指定类型为 txt 文件
dir.setNameFilters(filters);
QList<QFileInfo> fileInfoList = dir.entryInfoList();
for (int i = 0; i < fileInfoList.size(); ++i) {
QFileInfo fileInfo = fileInfoList.at(i);
qDebug() << fileInfo.fileName();
}
return 0;
}
```
在这个示例代码中,我们首先创建了一个 QDir 对象来表示当前目录。然后,我们创建了一个 QStringList 对象来存储文件类型的过滤器,这里我们指定为 "*.txt" 表示只查找 txt 类型的文件。接着,我们将过滤器设置到 QDir 对象中,调用 entryInfoList() 函数获取当前目录下的文件信息列表,最后遍历列表并输出文件名。