FatFs-目錄下檔案掃描
阿新 • • 發佈:2018-11-21
FatFs - 通用的FAT檔案系統模組
FatFs是用於小型嵌入式系統的通用FAT/exFAT檔案系統模組。FatFs模組是按照ANSI C (C89)編寫的,完全獨立於磁碟I/O層。因此它是獨立於平臺的。在資源有限的情況下,可以整合到小型微控制器中,如8051、PIC、AVR、ARM、Z80、RX等。這裡也提供了用於微型微控制器的Petit FatFs模組。
官方網站:http://elm-chan.org/fsw/ff/00index_e.html
特性
- DOS/Windows相容的FAT/exFAT檔案系統。
- 平臺獨立的。容易埠。
- 程式程式碼和工作區域佔用的空間非常小。
- 各種配置選項,以支援:
- 長檔名在ANSI/OEM或Unicode。
- exFAT檔案系統。
- 執行緒安全的RTOS。
- 多個卷(物理驅動器和分割槽)。
- 變數扇區大小。
- 多個內碼表,包括DBCS。
- 只讀,可選的API, I/O緩衝區等等…
帶有FatFs模組的嵌入式系統的典型配置,但不是特定的配置。
- 如果為FatFs提供了一個工作磁碟模組,則不需要其他任何東西。
- 為了將現有的具有不同介面的磁碟驅動器連線在一起,需要一些粘合功能來轉換FatFs和驅動程式之間的介面。
- FatFs既不關心使用哪種儲存裝置,也不關心如何實現。只有一個要求是,它是一個用固定大小的塊讀取/寫入的塊裝置,可以通過上面定義的磁碟I/O函式訪問。
Fatfs資料夾移植
目錄下檔案掃描
FATFS fatsd; //定義檔案系統物件結構 f_mount(&fatsd,"0:",1); //掛載SD卡 FRESULT scan_files(char *path) { FRESULT res; //定義結果物件 DIR dir; //定義目錄物件 UINT i; //定義變數 static FILINFO fno; //定義靜態檔案資訊結構物件 res = f_opendir(&dir,path); //開啟目錄,返回狀態 和 目錄物件的指標 char pathBuff[256]; //定義路徑陣列 if(res == FR_OK) //開啟成功 { for(;;) //遍歷 { res = f_readdir(&dir, &fno); //讀取目錄,返回狀態 和 檔案資訊的指標 if(res != FR_OK || fno.fname[0] == 0) break; //若開啟失敗 或 到結尾,則退出 if(fno.fattrib & AM_DIR) //是目錄 { i = strlen(path); //獲取原目錄長度 sprintf(&path[i],"/%s",fno.fname); //將新目錄新增在原目錄後面 printf("是目錄::%s ",path); res = scan_files(path); //將新目錄進行遞迴呼叫 if(res != FR_OK) break; //開啟失敗則退出 path[i] = 0; }else { printf("是檔案:%s/%s ",path,fno.fname); //是檔案 //strcpy(pathBuff, fno.fname); //將檔案目錄儲存起來 } } } else { printf("失敗 - %s ",&res); //開啟失敗 } f_closedir(&dir); //關閉目錄 return res; //返回狀態