qt 之拷贝文件夹内容到另外一个文件夹

遇到的问题  dir.setFilter(); 难道不能同时使用 QDir::Files | QDir::Dirs;而要分开使用吗。这一点令小小程序员有些困惑。

代码如下:

QStringList excludeFiles;
excludeFiles<<".";
excludeFiles<<"..";


void copyFolder(const QString &srcFolder,const QString & dstFolder,const QStringList &excludeFiles)
{
     QDir dir( srcFolder );


     dir.setFilter(QDir::Files);
     QFileInfoList list = dir.entryInfoList();
     int count = list.count();
     for (int index = 0; index < count; index++)
     {
         QFileInfo fileInfo = list.at(index);
         QString fileName = fileInfo.fileName();
         if( excludeFiles.indexOf( fileName ) != -1 )
             continue;
         if( !dir.exists(dstFolder) )
             dir.mkpath(dstFolder);
         QString newSrcFileName = srcFolder + "/" + fileInfo.fileName();
         QString newDstFileName = dstFolder + "/" + fileInfo.fileName();
         QFile::copy(newSrcFileName, newDstFileName);
     }


     dir.setFilter(QDir::Dirs);
     list = dir.entryInfoList();
     count = list.count();
     for (int index = 0; index < count; index++)
     {
         QFileInfo fileInfo = list.at(index);
         QString fileName = fileInfo.fileName();
         if( fileInfo.isDir() )
         {
             if( excludeFiles.indexOf( fileName ) != -1 )
                 continue;
             QString newSrcFolder = srcFolder + "/" + fileName;
             QString newDstFolder = dstFolder + "/" + fileName;
             copyFolder( newSrcFolder , newDstFolder ,excludeFiles);
         }
     }
}

你可能感兴趣的:(qt)