获取文件夹目录下所有文件与路径 qt
时间: 2023-08-01 10:06:05 浏览: 194
您可以使用 Qt 的 QDir 类来获取文件夹目录下的所有文件和路径。具体操作步骤如下:
1. 创建 QDir 对象,指定需要获取文件列表的目录路径:
```
QDir dir("/path/to/directory");
```
2. 调用 QDir 的 entryInfoList() 方法获取目录下的文件列表:
```
QFileInfoList fileList = dir.entryInfoList();
```
3. 遍历文件列表,获取每个文件的路径:
```
foreach (QFileInfo fileInfo, fileList) {
QString filePath = fileInfo.absoluteFilePath(); // 获取文件的绝对路径
if (fileInfo.isFile()) {
// 处理文件
} else if (fileInfo.isDir()) {
// 处理子目录
}
}
```
这样就可以获取文件夹目录下所有文件和路径了。注意,上述代码只会获取当前目录下的文件和子目录,如果需要获取子目录下的文件,可以通过递归的方式来实现。
相关问题
获取文件夹目录下所有文件按从早到晚排序 qt
您可以使用QDir类中的entryInfoList函数来获取目录下所有文件和子目录的信息,并使用QFileInfo类中的lastModified函数获取文件的最后修改时间,然后可以使用QList类中的sort函数对文件信息进行排序。以下是一个简单的示例代码,用于按照文件的最后修改时间从早到晚排序:
```cpp
#include <QDir>
#include <QFileInfo>
void sortFilesByLastModified(const QString& dirPath)
{
// Create a QDir object for the directory
QDir dir(dirPath);
// Get a list of all the files and directories in the directory
QList<QFileInfo> fileInfoList = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
// Sort the files by last modified time (from oldest to newest)
std::sort(fileInfoList.begin(), fileInfoList.end(),
[](const QFileInfo& fileInfo1, const QFileInfo& fileInfo2) {
return fileInfo1.lastModified() < fileInfo2.lastModified();
});
// Print the sorted file list
for (const QFileInfo& fileInfo : fileInfoList) {
if (fileInfo.isDir()) {
// Recursively sort files in subdirectories
sortFilesByLastModified(fileInfo.filePath());
} else {
qDebug() << fileInfo.fileName() << " - " << fileInfo.lastModified();
}
}
}
```
调用`sortFilesByLastModified`函数并传入目录路径即可按照文件的最后修改时间从早到晚排序并打印文件名及最后修改时间。如果目录下存在子目录,还需要递归地对子目录中的文件进行排序。
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"`替换为您需要遍历的文件夹路径即可。