qt-遍历文件夹、删除文件夹

Qt文件夹操作与遍历
本文介绍如何使用Qt进行文件夹的删除操作,并展示了如何遍历文件夹及其子目录来查找特定类型的文件,适用于Qt应用程序开发。

//1.删除文件夹
bool MainWindow::DelDir(const QString &path)
{
if (path.isEmpty()){
return false;
}
QDir dir(path);
if(!dir.exists()){
return true;
}
dir.setFilter(QDir::AllEntries | QDir::NoDotAndDotDot); //设置过滤
QFileInfoList fileList = dir.entryInfoList(); // 获取所有的文件信息
foreach (QFileInfo file, fileList){ //遍历文件信息
if (file.isFile()){ // 是文件,删除
file.dir().remove(file.fileName());
}else{ // 递归删除
DelDir(file.absoluteFilePath());
}
}
return dir.rmpath(dir.absolutePath()); // 删除文件夹
}

//1.1.目录
void ImageTree::addFolderImages(QString path)
{
//判断路径是否存在
QDir dir(path);
if(!dir.exists())
{
return;
}
dir.setFilter(QDir::Files | QDir::NoSymLinks);
QFileInfoList list =dir.entryInfoList();

int file_count =list.count();
if(file_count <=0)
{
   return;
}

QStringListstring_list;
for(int i=0; i
{
   QFileInfo file_info = list.at(i);
   QString suffix = file_info.suffix();
   if(QString::compare(suffix, QString("png"),Qt::CaseInsensitive) == 0)  
   {  
      QString absolute_file_path= file_info.absoluteFilePath();
     string_list.append(absolute_file_path);
   }
}

}
分析:遍历文件的下一层,对于系统而言包括:文件夹、文件、快捷方式,使用setFilter即可过滤。通过entryInfoList则可以获取过滤后所得到的文件夹下的文件信息列表,遍历文件通过操作QFileInfo可得到所需的文件详细信息(大小、类型、后缀等)。

2.遍历文件夹及文件夹子目录
void ImageTree::addSubFolderImages(QString path)
{
//判断路径是否存在
QDir dir(path);
if(!dir.exists())
{
return;
}

//获取所选文件类型过滤器
QStringList filters;
filters<<QString("*.jpeg")<<QString("*.jpg")<<QString("*.png")<<QString("*.tiff")<<QString("*.gif")<<QString("*.bmp");

//定义迭代器并设置过滤器
QDirIterator dir_iterator(path,
    filters,
    QDir::Files | QDir::NoSymLinks,
    QDirIterator::Subdirectories);
QStringList string_list;
while(dir_iterator.hasNext())
{
    dir_iterator.next();
    QFileInfo file_info = dir_iterator.fileInfo();
    QString absolute_file_path = file_info.absoluteFilePath();
    string_list.append(file_path);
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值