Qt上获取指定目录下或者及其子目录下各文件或者子目录的全路径
2018-01-22 17:16
555 查看
在做一个项目的时候,需要获取一个指定的文件夹下的所有子文件夹下的所有文件的全路径,这样将所有文件的绝对路径取到,然后对这些文件进行处理。
在发现没有相关的Qt自带的函数后,自己写了如下的函数。
头文件:
源文件:
在上面的代码里面没有写对默认set进来的路径和构造函数进来的路径的代码,但是显而易见非常容易,写几个没有参数的同样的方法名,然后在其函数内部进行对上面函数的调用即可实现。
在发现没有相关的Qt自带的函数后,自己写了如下的函数。
头文件:
#ifndef ALLFILESORPATHINDIR_H #define ALLFILESORPATHINDIR_H #include <QString> #include <QStringList> class AllFilesOrPathInDir { public: AllFilesOrPathInDir(); /** * @brief AllFilesOrPathInDir 构造函数 * @param dirPath 目录的路径 */ AllFilesOrPathInDir(QString dirPath); /** 设置目录 * @brief setDirPath * @param dirPath 目标文件夹的目录 */ void setDirPath(QString dirPath); /** 获取指定目录下的文件路径+名称 * @brief getFilePathNameOfSplDir * @param dirPath 目标文件夹的目录 * @return */ QStringList getFilePathNameOfSplDir(QString dirPath); /** 获取在指定目录下的目录的路径 * @brief getDirPathOfSplDir * @param dirPath 4000 * @return */ QStringList getDirPathOfSplDir(QString dirPath); /** 获取指定目录下的文件和目录的全路径 * @brief getFileAndDirPathNameOfSplDir * @param dirPath * @return */ QStringList getFileAndDirPathNameOfSplDir(QString dirPath); /** 在指定文件夹下的文件数 * @brief fileConutInSplDir * @param dirPath * @return */ int fileConutInSplDir(QString dirPath); /** 在指定文件夹下的目录数 * @brief dirCountInSplDir * @param dirPath * @return */ int dirCountInSplDir(QString dirPath); /** 获取指定目录及其子目录下文件的全路径 * @brief getFilePathNameOfSplAndChildDir * @param dirPath * @return */ QStringList getFilePathNameOfSplAndChildDir(QString dirPath); /** 获取指定目录及其子目录下的文件夹的全路径 * @brief getDirPathOfSplAndChildDir * @param dirPath * @return */ QStringList getDirPathOfSplAndChildDir(QString dirPath); /** 获取指定目录及其子目录下的文件与目录的全路径 * @brief getFileAndDirPathNameOfSplAndChildDir * @param dirPath * @return */ QStringList getFileAndDirPathNameOfSplAndChildDir(QString dirPath); private: QString dirPath; }; #endif // ALLFILESORPATHINDIR_H
源文件:
#include "AllFilesOrPathInDir.h" #include <QFileInfo> #include <QFileInfoList> #include <QDir> #include <QDebug> AllFilesOrPathInDir::AllFilesOrPathInDir() { } AllFilesOrPathInDir::AllFilesOrPathInDir(QString dirPath) { this->dirPath = dirPath; testCode(); } void AllFilesOrPathInDir::setDirPath(QString dirPath) { this->dirPath = dirPath; } QStringList AllFilesOrPathInDir::getFilePathNameOfSplDir(QString dirPath) { QStringList filePathNames; QDir splDir(dirPath); QFileInfoList fileInfoListInSplDir = splDir.entryInfoList(QDir::Files); QFileInfo tempFileInfo; foreach (tempFileInfo, fileInfoListInSplDir) { // absoluteFilePath() -- 截取到的是文件夹的路径 // absolutePath() -- 截取的是文件夹所在路径 filePathNames << tempFileInfo.absoluteFilePath(); } return filePathNames; } QStringList AllFilesOrPathInDir::getDirPathOfSplDir(QString dirPath) { QStringList dirPaths; QDir splDir(dirPath); QFileInfoList fileInfoListInSplDir = splDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); QFileInfo tempFileInfo; foreach (tempFileInfo, fileInfoListInSplDir) { dirPaths << tempFileInfo.absoluteFilePath(); } return dirPaths; } QStringList AllFilesOrPathInDir::getFileAndDirPathNameOfSplDir(QString dirPath) { QStringList fileAndDirPathNames; fileAndDirPathNames << getFilePathNameOfSplDir(dirPath); fileAndDirPathNames << getDirPathOfSplDir(dirPath); return fileAndDirPathNames; } int AllFilesOrPathInDir::fileConutInSplDir(QString dirPath) { return QDir(dirPath).entryList(QDir::Files).count(); } int AllFilesOrPathInDir::dirCountInSplDir(QString dirPath) { return QDir(dirPath).entryList(QDir::Dirs | QDir::NoDotAndDotDot).count(); } QStringList AllFilesOrPathInDir::getFilePathNameOfSplAndChildDir(QString dirPath) { QStringList filePathNames; // 首先,得到这个目录下面的文件全部 filePathNames << getFilePathNameOfSplDir(dirPath); QStringList childDirs; childDirs << getDirPathOfSplDir(dirPath); QString tempChildDir; foreach (tempChildDir, childDirs) { // 取其子文件夹内容 filePathNames << getFilePathNameOfSplAndChildDir(tempChildDir); } return filePathNames; } QStringList AllFilesOrPathInDir::getDirPathOfSplAndChildDir(QString dirPath) { QStringList dirPathNames; dirPathNames << getDirPathOfSplDir(dirPath); QString tempChildDir; foreach (tempChildDir, dirPathNames) { dirPathNames << getDirPathOfSplAndChildDir(tempChildDir); } return dirPathNames; } QStringList AllFilesOrPathInDir::getFileAndDirPathNameOfSplAndChildDir(QString dirPath) { QStringList fileAndDirPathNames; fileAndDirPathNames << getFilePathNameOfSplDir(dirPath); QStringList childDirs; childDirs << getDirPathOfSplDir(dirPath); QString tempChildDir; foreach (tempChildDir, childDirs) { fileAndDirPathNames << tempChildDir; // 取其子文件夹内容 fileAndDirPathNames << getFileAndDirPathNameOfSplAndChildDir(tempChildDir); } return fileAndDirPathNames; }
在上面的代码里面没有写对默认set进来的路径和构造函数进来的路径的代码,但是显而易见非常容易,写几个没有参数的同样的方法名,然后在其函数内部进行对上面函数的调用即可实现。
相关文章推荐
- 获取指定目录及其子目录下所有文件的绝对路径
- 获取指定目录及其子目录的所有文件(JAVA)
- PHP 获取指定目录下所有文件(包含子目录)
- 用grep查找指定目录及其子目录下的特定文件类型
- 获取指定目录下的所有文件名和路径(包括子目录)
- 拷贝一个目录或者文件到指定路径下
- 通过文件选择框获取指定的目录路径
- Linux C: 获取指定路径下的文件目录
- 【代码】当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径
- Windows API函数获取指定文件目录下文件路径(vc6.0通过)
- Python搜索目录下指定的文件,并返回绝对路径(包括子目录)
- 根据指定目录获取所以文件包括子目录下的文件
- Linux查找当前目录及其子目录下所有包含指定字符串的文件
- Python 在当前目录以及其子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
- 查找当前目录下的及其子目录中指定的文件
- PHP中获取目录及子目录下的所有文件路径和目录路径
- win32命令行小程序获取指定文件夹或者目录下面的所有文件大小,文件数量,目录数量
- android获取指定路径下目录文件
- 续:C# 趣味小程序(4)——遍历特定目录及其子目录 (应用实例,压缩指定目录下的所有文件)
- java 使用递归获取指定文件路径目录,删除指定的文件后缀(可扩展,根据具体需要的删除的后缀进行配置)~~