C 遍歷目錄 finddata t結構體用法

2021-08-21 11:38:39 字數 2749 閱讀 3049

struct _finddata_t是用來儲存檔案各種資訊的結構體,使用這個結構體要引用的標頭檔案為「 #include 」它的結構體定義如下:

struct

_finddata_t

;

改結構體中各成員的變數的含義如下:

unsigned atrrib:檔案屬性的儲存位置。它儲存乙個unsigned單元,用於表示檔案的屬性。檔案屬性是用位表示的,主要有以下一些:

_a_arch(存檔)、

_a_hidden(隱藏)、

_a_normal(正常)、

_a_rdonly(唯讀)、

_a_subdir(資料夾)、

_a_system(系統)

這些都是在中定義的巨集,可以直接使用,而本身的意義其實是乙個無符號整型(只不過這個整型應該是2的幾次冪,從而保證只有一位為 1,而其他位為0)。既然是位表示,那麼當乙個檔案有多個屬性時,它往往是通過位或的方式,來得到幾個屬性的綜合。例如唯讀+隱藏+系統屬性,應該為:_a_hidden | _a_rdonly | _a_system 。

time_t time_create:這裡的time_t是乙個變數型別,實際上就是長整形變數 long int,用來儲存從2023年1月1日0時0分0秒到現在時刻的秒數

time_t time_access:檔案最後一次被訪問的時間。

time_t time_write:檔案最後一次被修改的時間。

_fsize_t size:檔案的大小(位元組數表示)。

char name[_max_fname]:檔案的檔名。這裡的_max_fname是乙個常量巨集,它在標頭檔案中被定義,表示的是檔名的最大長度。

如何使用這個結構體才能夠將檔案的資訊儲存到該結構體的記憶體空間呢,這就需要_findfirst()、_findnext()和_fineclose()三個函式的搭配使用,下面介紹這三個函式:

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

返回值:如果查詢成功的話,將返回乙個long型的唯一的查詢用的控制代碼。這個控制代碼將會在_findnext函式中被使用。失敗返回0.

引數:

filespec:標明檔案的字串,可支援萬用字元。比如:*.c,則表示當前資料夾下的所有字尾為c的檔案。

fileinfo :這裡就是用來存放檔案資訊的結構體的指標。這個結構體必須在呼叫此函式前宣告,不過不用初始化,只要分配了記憶體空間就可以了。函式成功後,函式會把找到的檔案的資訊放入這個結構體所分配的記憶體空間中。

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

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

引數:

handle :_findfirst函式返回回來的控制代碼。

該結構體和搭配的函式使用的邏輯就是先用_findfirst查詢第乙個檔案,若成功則用返回的控制代碼,呼叫_findnext函式查詢其他的檔案,當查詢完畢後用,用_findclose函式結束查詢。下面我們就按照這樣的思路來編寫乙個查詢某乙個資料夾下的所有word文件的程式。

#include#include

#include

#define addr "e://

test//*.docx"

const

char* sreachaddr=addr;

int main(void

) _findclose(handle);

system(

"pause");

return0;

}

//

檔案搜尋.cpp : 定義控制台應用程式的入口點。

//#include

"stdafx.h

"#include

#include

#include

using

namespace

std;

void visitdir(const

char* dir,const

char*filename)

do

else

cout

<< finddata.name << "\t"

<< finddata.size << "

bytes.\n";

}while (_findnext(handle, &finddata) == 0

); _findclose(handle);

}int

main()

當然,在找到所有需要的檔案後,不僅僅可以通過終端列印出來,還可以進行刪除、改名等操作。一般的c語言病毒會用到這個結構體加配合函式進行找到某一型別的檔案然後進行惡意刪除,例如某一c語言病毒中的刪除操作**如下:

void remove()

;for (i = 0; i < 3; i++)

_findclose(done);

}}

cmd for 遍歷目錄 python 遍歷目錄樹

假定你希望對某個資料夾中的所有檔案改名,包括該資料夾中所有子資料夾中 的所有檔案。也就是說,你希望遍歷目錄樹,處理遇到的每個檔案。寫程式完成這 件事,可能需要一些技巧。好在,python 提供了乙個函式,替你處理這個過程。請看 c delicious 資料夾及其內容,如圖所示。這裡有乙個例子程式,針...

基於ACE實現C 目錄遍歷

目錄遍歷,在軟體程式設計中屬於常見的需求 如 病毒掃瞄 源 編輯 檔案比較。在 windows 環境,使用 findfirstfileex findnextfile 詳細情況可以參考 msdn 等檔案訪問函式,能夠實現目錄遍歷 在 posix 環境,可以使用 open dir 跨平台不是這裡討論的重...

C 遍歷子目錄檔案

winform介面設計 放置乙個textbox控制項 命名為 txtpath 兩個按鈕控制項 乙個btnselect,乙個btnstart 乙個顯示檔案列表label控制項 lblfilelist 還有乙個重要的folderbrowserdialog1控制項。1 stringbuilder strf...