遍历获取文件夹所有文件目录 qt
时间: 2023-07-25 17:03:33 浏览: 150
你可以使用 QDir 类来遍历文件夹并获取其所有文件目录。以下是一个示例代码:
```cpp
QDir dir("your/folder/path");
dir.setFilter(QDir::Files | QDir::NoDotAndDotDot); //筛选文件并排除.和..目录
QFileInfoList fileInfoList = dir.entryInfoList();
foreach(QFileInfo fileInfo, fileInfoList) {
QString filePath = fileInfo.absoluteFilePath();
// 这里可以对 filePath 进行进一步处理,例如输出、存储等操作
}
```
如果你想获取文件夹中的所有文件和子文件夹中的文件,可以使用以下代码:
```cpp
QDirIterator it("your/folder/path", QDirIterator::Subdirectories);
while (it.hasNext()) {
QString filePath = it.next();
if (QFileInfo(filePath).isFile()) {
// 这里可以对 filePath 进行进一步处理,例如输出、存储等操作
}
}
```
这段代码使用 QDirIterator 类来遍历文件夹及其子目录,并且通过 QFileInfo 类的 isFile() 方法来判断是否为文件。
相关问题
QT遍历获取文件夹下所有文件路径
您可以使用 QDir 类实现遍历获取文件夹下的所有文件路径,具体代码如下:
```cpp
#include <QDir>
//获取指定目录下的所有文件路径
void getAllFilePaths(const QString& dirPath, QStringList& filePaths)
{
QDir dir(dirPath);
if(!dir.exists()) return;
dir.setFilter(QDir::Files | QDir::NoSymLinks);
dir.setSorting(QDir::Name | QDir::IgnoreCase);
QFileInfoList fileInfoList = dir.entryInfoList();
foreach(QFileInfo fileInfo, fileInfoList)
{
filePaths.append(fileInfo.filePath());
}
dir.setFilter(QDir::Dirs | QDir::NoSymLinks);
fileInfoList = dir.entryInfoList();
foreach(QFileInfo fileInfo, fileInfoList)
{
if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") continue;
getAllFilePaths(fileInfo.filePath(), filePaths);
}
}
//使用方法
QStringList filePaths;
getAllFilePaths("your/path", filePaths);
foreach(QString filePath, filePaths)
{
//处理文件路径
}
```
其中,`getAllFilePaths`函数可以递归遍历获取指定目录下的所有文件路径,并将它们存储在一个字符串列表中。您只需要将`"your/path"`替换为您需要遍历的文件夹路径即可。
Qt遍历当前文件夹所有文件
以下是一个示例代码,使用Qt遍历当前文件夹所有文件:
```
#include <QDir>
#include <QDebug>
void traverseFiles(const QDir& dir)
{
QStringList filters;
filters << "*.txt"; //可以根据需要修改过滤条件,这里只列出txt文件
QFileInfoList list = dir.entryInfoList(filters, QDir::Files);
foreach(QFileInfo fileInfo, list)
{
qDebug() << fileInfo.filePath();
}
QStringList subDirList = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach(QString subDir, subDirList)
{
traverseFiles(QDir(dir.filePath(subDir)));
}
}
int main(int argc, char *argv[])
{
QDir dir(".");
traverseFiles(dir);
return 0;
}
```
上述代码中,`traverseFiles`函数用于遍历当前文件夹中的所有文件和子文件夹。首先,使用`entryInfoList`函数获取当前文件夹中所有符合过滤条件(这里是txt文件)的文件,然后遍历输出每个文件的路径。接着,使用`entryList`函数获取当前文件夹中所有子文件夹的名称,然后递归调用`traverseFiles`函数遍历每个子文件夹。