qt文件目录迭代器基本使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了qt文件目录迭代器基本使用相关的知识,希望对你有一定的参考价值。

//#include <fcntl.h>

//#include <sys/types.h>
//#include <unistd.h>

//#include <stdio.h>

 

checkFileNum::checkFileNumPro(){

    //    *****************************************
    //    创建文件的默认位置(当前目录)是在build-SC-Desktop_Qt_5_5_1_MinGW_32bit-Debug
    //    int fd = open("../ScEnv/file.txt", O_RDONLY|O_CREAT);
    //    *******************************************
    //    以下验证打印方式无误
    //    QString s = "abcdefg";
    //    qDebug("%s", qPrintable(s));
    //    *********************************************
        QDirIterator dirIterator(USB_SOURCE_DIR);
        int numFiles = QDir(USB_SOURCE_DIR).count();
        QString fileNames;
        while(dirIterator.hasNext()){
            fileNames = dirIterator.next();
    //        qDebug("%s", qPrintable(fileNames));
            fileNames = dirIterator.fileName();
    //        qDebug("%s", qPrintable(fileNames));
            qDebug() << numFiles;
            qDebug() << fileNames;
        }
}
一、    在使用QDirIterator对文件目录操作的时候,对于读取目录中的文件名时:
hasNext()函数是判断目录中是否为空;
next()是读取下一个文件路径,包括前缀;
fileName()是读取当前文件名称,该函数使用时必须与next()配套使用;
下面短程序,在无next()函数时,迭代器一直停留在目录的最开始端,filename()函数读取的目录名称一直为空,
只用用了next()函数才能使迭代器移到下一条目录上,才能正常操作;
以下为next()和fileName()读取的文件名:
../ScEnv/db/.
.
../ScEnv/db/..
..
../ScEnv/db/197001_origin.db
197001_origin.db
../ScEnv/db/197001_result.db
197001_result.db
../ScEnv/db/201502015_result.db
201502015_result.db
../ScEnv/db/201507_origin.db
201507_origin.db
../ScEnv/db/201507_result.db
201507_result.db
../ScEnv/db/dataCollect_result.db
dataCollect_result.db
二:在运用qDebug()函数进行打印信息的时候在打印字符串是有两种方式:
1、qDebug("%s", qPrintable(fileNames));
2、qDebug() << fileNames;
在单一打印时推崇第二种,不用使用格式助记符;
在多重打印时推崇第一种,可以简化书写;
 


 

以上是关于qt文件目录迭代器基本使用的主要内容,如果未能解决你的问题,请参考以下文章

向量迭代器不是增量的

无法运行Qt设计器编译的python代码[重复]

容器,算法和迭代器实现的基本思路

QT迭代器 QVector<int>::iterator it;

QT 实用代码片段

基于指针的基本随机访问迭代器的代码?