• 8111阅读
  • 3回复

[提问]菜鸟求教~QDir怎么用namefilter获得想要的文件类型~又不过滤掉文件夹~!? [复制链接]

上一主题 下一主题
离线bin192828
 
只看楼主 倒序阅读 楼主  发表于: 2011-02-12
如题
离线bin192828
只看该作者 1楼 发表于: 2011-02-12
在线呆坐自顶求真相~~
离线jdwx

只看该作者 2楼 发表于: 2011-02-12
QFileInfoList QDir::entryInfoList ( Filters filters = NoFilter, SortFlags sort = NoSort ) const
就这个函数
QDir dir(某个dir);
QFileInfoLis list=dir.entryInfoList ();
自己在list里筛选,根据扩展名选文件,目录没扩展名.
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线hicjiajia

只看该作者 3楼 发表于: 2011-02-13
你这个问题,我以前研究过,我的思路是:
定义一个函数qFile(const QDir& fromDir, const QDir& toDir, const QStringList& filters,  bool bCoverIfFileExists)
第三个QStringList参数filters为过滤器,用来获取指定扩展名的文件,关键是此参数并不作为entryInfoList()的过滤参数,让entryInfoList()参数为空,以便获取当前目录下的所有文件及目录,然后通过QFileInfo获取每个文件的具体信息,并判断每个文件信息的后缀是否为过滤器参数 :
if(filters.contains(fileInfo.completeSuffix())) { 获取指定扩展名文件后的一些操作 ... }
如果需要递归操作目录的话,加句 :
if(fileInfo.isDir())  {qFile(fileInfo.filePath(), toDir_.filePath(fileInfo.fileName()),filters,bCoverIfFileExists)) }
为此我特意做了一个示例,功能就是递归复制指定文件夹下的所有所有指定文件,如果在 Window下再 配合API动态获取U盘接入信号后台启动程序就变成U盘大盗了 ... (复制部分参考了wangxinus的代码,稍作修改 ) :


[upload=2]
快速回复
限100 字节
 
上一个 下一个