fatfs輸出目錄


利用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卡進行驗證:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM