QDir entryInfoList获取到文件为0
时间: 2024-06-04 19:10:09 浏览: 42
如果你使用 `QDir::entryInfoList()` 方法获取文件列表,但是返回结果为0,可能有以下几种原因:
1. 目录不存在或者路径不正确:请确保你传入的路径是正确的,并且目录确实存在。
2. 没有权限:请确保程序有权限访问该目录。如果你是在Windows系统下运行程序,可能需要以管理员权限运行程序。
3. 过滤条件不正确:`entryInfoList()`方法可以接受一个过滤条件的参数,如果你传入了错误的过滤条件,可能导致返回结果为0。请确保你传入的过滤条件正确。
你可以在调用 `entryInfoList()` 方法前,使用 `QDir::exists()` 方法检查目录是否存在,并且使用 `QDir::isReadable()` 方法检查是否有读取目录的权限。如果这些都没问题,那么你可以尝试使用不同的过滤条件来获取文件列表。
相关问题
c++qdir删除某个文件夹下面所有文件
你可以使用QDir类的removeRecursively函数来删除某个文件夹及其下面的所有文件和子文件夹。示例代码如下:
```c++
#include <QDir>
// 删除文件夹及其下面的所有文件和子文件夹
void deleteDirectory(const QString& path)
{
QDir dir(path);
if (!dir.exists()) return;
QFileInfoList fileList = dir.entryInfoList(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
foreach (QFileInfo fileInfo, fileList) {
fileInfo.dir().remove(fileInfo.fileName());
}
QFileInfoList folderList = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot);
foreach (QFileInfo folderInfo, folderList) {
deleteDirectory(folderInfo.absoluteFilePath());
}
dir.rmdir(".");
}
```
在上述代码中,deleteDirectory函数使用递归的方式来删除指定文件夹下面的所有文件和子文件夹。首先使用entryInfoList函数获取指定文件夹下面的所有文件和子文件夹,然后分别对文件和子文件夹进行处理。如果是文件,则直接使用remove函数删除,如果是子文件夹,则递归调用deleteDirectory函数来删除。最后再使用rmdir函数删除当前文件夹。
写出Qt C++代码 : QDir::entryInfoList 过滤*.log和*.txt
下面是使用 `QDir::entryInfoList` 过滤 `*.log` 和 `*.txt` 文件的 Qt C++ 代码示例:
```cpp
#include <QDir>
#include <QDebug>
int main()
{
// 构造一个 QDir 对象,并设置目录为当前工作目录
QDir dir(".");
// 获取 *.log 和 *.txt 文件的信息列表
QStringList filters;
filters << "*.log" << "*.txt";
QList<QFileInfo> fileInfoList = dir.entryInfoList(filters, QDir::Files);
// 遍历文件信息列表,并打印文件名
foreach (QFileInfo fileInfo, fileInfoList) {
qDebug() << fileInfo.fileName();
}
return 0;
}
```
这个示例中,使用 `QDir` 类构造了一个对象来操作文件系统中的目录。然后,调用 `entryInfoList` 函数获取符合过滤条件的文件信息列表。最后,使用 `foreach` 循环遍历文件信息列表,并打印出每个文件的文件名。