利用fatfs文件系統,
如何輸出SD卡根目錄下的各個文件夾名字呢?
程序如下:
u8 Dirname_i; u8 Dirname_j; DIR dir; //讀取txt里的目錄用,還是要把fatfs看懂才行呀![] FILINFO f_info; exfuns_init(); res=f_mount(fs[0],"0:",1); //掛載sd卡,,, //下面我想得到文件夾的名字 //以下代碼實現讀取根目錄下所有的子目錄名(短文件名)並保存到數組Dirname[MAXDIR][13]中,后來我把這個數組改成了Dirname[80][13] // #define MAXDIR 80; if(f_opendir(&dir,"")!=FR_OK) { //錯誤處理代碼... } for(Dirname_i=0;Dirname_i<80;Dirname_i++) //把Dirname數組清零,用於裝文件夾名.其實這個可以省略,因為當定義好Dirname[][]的時候,它就是空的 { for(Dirname_j=0;Dirname_j<13;Dirname_j++) { Dirname[Dirname_i][Dirname_j]=0; } } maxdir=1; while(1) { if(f_readdir(&dir,&f_info)==FR_OK) //還是不太清楚,就連fatfs最基本的格式都不清楚。???? { if(f_info.fname[0]==0)break; //這里代表讀完了所有的文件夾目錄????因為調用一次f_readdir(),就會輸出一個文件夾名,如果把所有的文件夾名都輸出了,那么就會輸出一個空的字符串,這里就是判斷是否輸出的是空字符串. } else break; //如果讀取目錄出錯,也要跳出了.???? if(f_info.fattrib&AM_DIR) //目錄,有目錄可以提取. { if(maxdir<80) { strncpy(&Dirname[maxdir][0],f_info.fname,13); //把目錄提取出來放到Dirname的一行里 maxdir++; //進行加加,預計能提取80個,因為我們這個循環是80次的. } else break; } } ...
仿真結果:
下面用電腦打開SD卡進行驗證: