青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

colorful

zc qq:1337220912

 

C/C++遍歷文件夾

 finddata_t的使用

  那么到底如何查找文件呢?我們需要一個結構體和幾個大家可能不太熟悉的函數。這些函數和結構體在<io.h>的頭文件中,結構體為 struct _finddata_t ,函數為_findfirst、_findnext和_fineclose.具體如何使用,我會慢慢講來~

  首先講這個結構體吧~struct _finddata_t ,這個結構體是用來存儲文件各種信息的。說實話,這個結構體的具體定義代碼,我沒有找到,不過還好,文檔里面在_find里有比較詳細的成員變量介紹。我基本上就把文檔翻譯過來講吧:

  unsigned atrrib:文件屬性的存儲位 置。它存儲一個unsigned單元,用于表示文件的屬性。文件屬性是用位表示的,主要有以下一些:_A_ARCH(存檔)、_A_HIDDEN(隱 藏)、_A_NORMAL(正常)、_A_RDONLY(只讀)、_A_SUBDIR(文件夾)、_A_SYSTEM(系統)。這些都是 在<io.h>中定義的宏,可以直接使用,而本身的意義其實是一個無符號整型(只不過這個整型應該是2的幾次冪,從而保證只有一位為1,而其 他位為0)。既然是位表示,那么當一個文件有多個屬性時,它往往是通過位或的方式,來得到幾個屬性的綜合。例如只讀+隱藏+系統屬性,應該 為:_A_HIDDEN | _A_RDONLY |_A_SYSTEM .

  time_t time_create:這里的time_t是一個變量類型(長整型?相當于long int?),用來存儲時間的,我們暫時不用理它,只要知道,這個time_create變量是用來存儲文件創建時間的就可以了。

  time_t time_access:文件最后一次被訪問的時間。

  time_t time_write:文件最后一次被修改的時間。

  _fsize_t size:文件的大小。這里的_fsize_t應該可以相當于unsigned整型,表示文件的字節數。

  char name[_MAX_FNAME]:文件的文件名。這里的_MAX_FNAME是一個常量宏,它在<stdlib.h>頭文件中被定義,表示的是文件名的最大長度。

  以此,我們可以推測出,struct_finddata_t ,大概的定義如下:

  struct _finddata_t

  {

  unsigned attrib;

  time_t time_create;

  time_t time_access;

  time_t time_write;

  _fsize_t size;

  char name[_MAX_FNAME];

  };

  前面也說了,這個結構體是用來存儲文件信息的,那么如何把一個硬盤文件的文件信息“存到”這個結構體所表示的內存空間里去呢?這就要靠_findfirst、_findnext和_fineclose三個函數的搭配使用了。

  首先還是對這三個函數一一介紹一番吧……

  long _findfirst( char *filespec, struct _finddata_t *fileinfo );

  返回值:如果查找成功的話,將返回一個long型的唯一的查找用的句柄(就是一個唯一編號)。這個句柄將在_findnext函數中被使用。若失敗,則返回-1.

  參數:

  filespec:標明文件的字符串,可支持通配符。比如:*.c,則表示當前文件夾下的所有后綴為C的文件。

  fileinfo :這里就是用來存放文件信息的結構體的指針。這個結構體必須在調用此函數前聲明,不過不用初始化,只要分配了內存空間就可以了。函數成功后,函數會把找到的文件的信息放入這個結構體中。

  int _findnext( long handle, struct _finddata_t *fileinfo );

  返回值:若成功返回0,否則返回-1.

  參數:

  handle:即由_findfirst函數返回回來的句柄。

  fileinfo:文件信息結構體的指針。找到文件后,函數將該文件信息放入此結構體中。

  int _findclose( long handle );

  返回值:成功返回0,失敗返回-1.

  參數:

  handle :_findfirst函數返回回來的句柄。

  大家看到這里,估計都能猜到個大概了吧?先用_findfirst查找第一個文件,若成功則用返回的句柄調用_findnext函數查找其他的 文件,當查找完畢后用,用_findclose函數結束查找。恩,對,這就是正確思路。下面我們就按照這樣的思路來編寫一個查找C:\WINDOWS文件 夾下的所有exe可執行文件的程序。

  #include <stdio.h>

  #include <io.h>

  const char *to_search="C:\\WINDOWS\\*.exe";        //欲查找的文件,支持通配符

  int main()

  {

  long handle;                                               //用于查找的句柄

  struct _finddata_t fileinfo;                          //文件信息的結構體

  handle=_findfirst(to_search,&fileinfo);         //第一次查找

  if(-1==handle)return -1;

  printf("%s\n",fileinfo.name);                         //打印出找到的文件的文件名

  while(!_findnext(handle,&fileinfo))               //循環查找其他符合的文件,知道找不到其他的為止

  {

  printf("%s\n",fileinfo.name);

  }

  _findclose(handle);                                      //別忘了關閉句柄

  system("pause");

  return 0;

  }

  當然,這個文件的查找是在指定的路徑中進行,如何遍歷硬盤,在整個硬盤中查找文件呢?大家可以在網絡上搜索文件遞歸遍歷等方法,這里不再做進一步介紹。

  細心的朋友可能會注意到我在程序的末尾用了一個system函數。這個與程序本身并沒有影響,和以前介紹給大家的使用getchar()函數的 作用相同,只是為了暫停一下,讓我們能看到命令提示符上輸出的結果而已。不過system函數本身是一個非常強大的函數。大家可以查查MSDN看看~簡單 來說,它是一個C語言與操作系統的相互平臺,可以在程序里通過這個函數,向操作系統傳遞command命令

posted on 2012-06-28 21:37 多彩人生 閱讀(756) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

統計

常用鏈接

留言簿(3)

隨筆分類

隨筆檔案

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            美女日韩在线中文字幕| 亚洲一区二区三区高清| 亚洲亚洲精品在线观看 | 亚洲精选国产| 亚洲欧洲久久| 久久久国产亚洲精品| 亚洲欧美一区二区原创| 亚洲精品乱码视频| 亚洲人成久久| 在线亚洲免费视频| 国产一区视频网站| 黄色欧美日韩| 国产精品一二三四区| 99精品免费网| 91久久久精品| 欧美高清视频| 亚洲人成艺术| 亚洲国产裸拍裸体视频在线观看乱了 | 一二美女精品欧洲| 欧美一级一区| 久久综合图片| 国内精品一区二区三区| 夜夜精品视频一区二区| 欧美福利专区| 欧美在线观看一二区| 欧美精品激情blacked18| 国户精品久久久久久久久久久不卡 | 亚洲天堂av在线免费| 欧美精品成人| 国产欧美日韩中文字幕在线| 亚洲欧洲另类国产综合| 久久大综合网| 午夜精品www| 国产精品一区二区欧美| 亚洲无线视频| 亚洲天堂av高清| 欧美视频在线一区| 亚洲欧美视频在线观看| 亚洲精品一线二线三线无人区| 蜜桃久久精品乱码一区二区| 亚洲电影自拍| 日韩视频一区二区在线观看| 欧美日韩精品不卡| 欧美夜福利tv在线| 久久久91精品| 亚洲美女毛片| 欧美诱惑福利视频| 亚洲人成小说网站色在线| 亚洲精品免费网站| 国产精品外国| 亚洲福利视频专区| 国产精品久久久久久久久久久久 | 欧美吻胸吃奶大尺度电影| 这里是久久伊人| 亚洲日本中文字幕区| 欧美日韩一区综合| 欧美一级在线视频| 女人色偷偷aa久久天堂| 欧美国产视频日韩| 一区二区国产精品| 久久国产婷婷国产香蕉| 国内自拍视频一区二区三区| 国产精品亚洲综合一区在线观看| 亚洲一区二区三区成人在线视频精品 | 国产精品成人免费精品自在线观看| 亚洲日本中文| 性欧美8khd高清极品| 亚洲欧洲久久| 欧美一区二区三区喷汁尤物| 亚洲国产日韩欧美一区二区三区| 亚洲国产欧美不卡在线观看 | 欧美一级专区| 欧美成va人片在线观看| 国产中文一区| 亚洲精品视频免费| 亚洲第一黄网| 久久精品一本| 欧美在线3区| 国产精品免费看| 亚洲午夜精品久久久久久app| 亚洲人成绝费网站色www| 欧美综合二区| 噜噜噜躁狠狠躁狠狠精品视频| 国产欧美一区二区三区在线看蜜臀 | 欧美第一黄网免费网站| 国产一区二区三区四区五区美女| 日韩视频在线观看| 在线视频亚洲一区| 欧美日韩中文字幕| 欧美福利视频在线| 亚洲精品一区二区三区不| 亚洲夜间福利| 欧美激情va永久在线播放| 亚洲电影免费在线观看| 亚洲免费观看高清完整版在线观看| 亚洲欧美一区在线| 久久三级福利| 亚洲人成亚洲人成在线观看图片| 欧美精品一区二区三区久久久竹菊 | 久久精品日韩| 亚洲国产精品小视频| 欧美成人久久| 欧美一级淫片aaaaaaa视频| 免费不卡在线观看av| 99精品视频免费观看| 欧美一区亚洲| 一区二区三区精品| 狠狠色伊人亚洲综合网站色| 欧美α欧美αv大片| 亚洲欧美久久久| 亚洲人成网站影音先锋播放| 久久国产加勒比精品无码| 一本久道久久综合狠狠爱| 激情一区二区三区| 国产精品久久久久久久久婷婷 | 欧美电影资源| 国内成+人亚洲+欧美+综合在线| 欧美亚洲第一页| 国产精品一区二区在线观看| 国产乱码精品一区二区三区五月婷| 亚洲欧洲另类| 亚洲精品日韩激情在线电影| 午夜亚洲性色视频| 99国产精品99久久久久久粉嫩| 国产精品揄拍500视频| 国产精品久久精品日日| 欧美天天综合网| 欧美日韩国产一区二区三区地区| 欧美激情 亚洲a∨综合| 中文日韩在线视频| 亚洲精品一区二区三区蜜桃久 | 欧美精品日韩www.p站| 久热re这里精品视频在线6| 久久一区免费| 欧美日韩在线一二三| 国产精品色在线| 国产性做久久久久久| 在线观看视频亚洲| 午夜精品久久久久久久久久久久久| 亚洲欧美精品一区| 麻豆精品在线视频| 欧美性色视频在线| 欧美激情综合网| 国产精品一区二区你懂的| **性色生活片久久毛片| 亚洲一区二区三区四区中文 | 欧美一区永久视频免费观看| 亚洲人www| 久久综合电影| 国产真实久久| 亚洲一区二区在线| 每日更新成人在线视频| 中日韩午夜理伦电影免费| 久久综合999| 国产日韩av一区二区| 一本色道精品久久一区二区三区| 一本色道久久| 欧美激情第4页| 欧美性大战久久久久久久蜜臀| 国产精品久久久久一区二区三区共 | 久久久精品国产免费观看同学| 国产精品国产福利国产秒拍| 亚洲第一精品夜夜躁人人躁| 国产日韩在线看片| 欧美在线播放| 久久久www成人免费无遮挡大片| 欧美日韩亚洲视频| 亚洲欧美日韩爽爽影院| 亚洲一区二区三区精品视频| 欧美日韩中国免费专区在线看| 亚洲手机在线| 欧美一区二区三区视频免费| 国产午夜精品一区理论片飘花 | 蜜桃av一区二区| 在线观看日产精品| 免费不卡亚洲欧美| 亚洲区一区二| 久久免费视频网站| 亚洲国产片色| 欧美国产日韩a欧美在线观看| 亚洲国产成人av| 亚洲一区二区三区四区中文| 国产精品美女一区二区| 免费在线看成人av| 日韩午夜在线电影| 小处雏高清一区二区三区| 亚洲国产欧美一区二区三区久久 | 欧美精品自拍| 久久久99精品免费观看不卡| 亚洲三级影院| 欧美亚洲成人精品| 欧美国产精品久久| 亚洲一卡二卡三卡四卡五卡| 亚洲国产成人久久综合一区| 亚洲午夜激情免费视频| 国产精品一区二区男女羞羞无遮挡| 国产一区二区三区视频在线观看| 一区二区三区日韩欧美精品| 免费美女久久99| 亚洲免费在线精品一区|