linux 獲得目錄中 文件夾 並 刪除掉最早的

獲得目錄的文件夾 並 刪除最早的 ,
好像這個QFileInfoListIterator只有 前++,
#include <stdio.h>
#include <stdlib.h>
#include <qdir.h>
#include <qstring.h>
int main(int argc, char *argv[])
{
        QDir d("/Record");
        d.setFilter( QDir::Dirs | QDir::NoSymLinks );
        d.setSorting( QDir::Name);
        const QFileInfoList *list = d.entryInfoList();
        QFileInfoListIterator it( *list );
        QFileInfo *fi;

 printf("%d/n",d.count());
 ++it;
 ++it;
 fi = it.current();
        printf( "%10li %s/n", fi->size(), fi->fileName().latin1() );
 QString Qs="rm -rf /Record/";
 Qs.append(fi->fileName().latin1());
 system(Qs);
  return EXIT_SUCCESS;
}
遍歷
    #include <stdio.h>
    #include <qdir.h>

    int main( int argc, char **argv )
    {
        QDir d;
        d.setFilter( QDir::Files | QDir::Hidden | QDir::NoSymLinks );
        d.setSorting( QDir::Size | QDir::Reversed );

        const QFileInfoList *list = d.entryInfoList();
        QFileInfoListIterator it( *list );
        QFileInfo *fi;

        printf( "     Bytes Filename/n" );
        while ( (fi = it.current()) != 0 ) {
            printf( "%10li %s/n", fi->size(), fi->fileName().latin1() );
            ++it;
        }
        return 0;
    } 

遞歸實現

#include <qdir.h>
#define DIRNAME "e:/test"                   
void foo1(QString );
void main()
{
   foo1(DIRNAME);
}
void foo1(QString s)
{
   if(s.right(1) != "/" ) s.append("/");    //判斷格式
   QDir dir(s);
   if(!dir.exists(s,true)) return ;        //是否存在
   int dc = dir.count();
   dir.rmdir(s,true);
   if(dir.exists(s,true))
   {
       for(int i =2 ; i< dc; i++)
       {
           QString temp = s ;
           temp.append(dir);
           dir.rmdir(temp,true);        //假設其是目錄
           dir.remove(temp,true);        //或者是文件
           if(dir.exists(temp,true))    //判斷是否刪除
           {   
               foo1(temp);                //遞歸
           }
       }
   }
   dir.rmdir(s,true);
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章