Fatfs简单的操作方法

2019-07-20 16:11发布

学习记录
FIL fp1;  //创建一个文件结构体
DWORD Pfile;//当前的读写指针
DWORD FileSize;//当前文件的大小
FILINFO finfo; //文件信息
DIR dirs; //目录
FRESULT rese;
u32 num;
u8 t=0;               
u8 i=0;
u8 Cbuf[20]="0123456789";
u8 C2buf[20]="abcdefghhk";
u8 Rbuf[30];               
//创建文件夹
f_mkdir ("WSdir"); //创建一个目录
f_mkdir ("WSdir/file1"); //        在上层目下创建一个子目录
       
//写文件
f_open (&fp1, "WSdir/file1/recoder.txt",  FA_OPEN_ALWAYS | FA_READ | FA_WRITE);         //打开或者创建一个文件
f_write (&fp1, Cbuf, 10, &num); //往打开的文件里写内容  
f_close (&fp1);                 //关闭文件
LCD_ShowString(30,290,200,16,16,"write ok num: ");
LCD_ShowNum(140,290,num,2,16); //显示写进去的个数       


//读文件         
f_open (&fp1, "WSdir/file1/recoder.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);         //打开或者创建一个文件
f_read (&fp1,  Rbuf , 10, &num);        //读取文件        
f_close (&fp1);                            //关闭文件
LCD_ShowString(30,320,200,16,16,"read ok num: ");
LCD_ShowNum(140,320,num,2,16);                    //显示读出来的个数
LCD_ShowString(30,350,200,16,16,Rbuf); //显示读出来的内容       
               
//在文件尾添加内容               
f_open (&fp1, "WSdir/file1/recoder.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE);        //打开或者创建一个文件
FileSize = f_size(&fp1);               //获取当前文件的大小
f_lseek (&fp1, FileSize);              //移动文件读写指针到文件尾
f_write (&fp1, C2buf, 10, &num);       //往打开的文件里写内容
LCD_ShowString(30,400,200,16,16,"write2 ok num: ");
LCD_ShowNum(140,400,num,2,16);               //显示写入个数
f_close (&fp1);                                       //关闭文件
               
               
               
//读取某个目录下的文件和子目录               
// f_readdir函数顺序读取目录项。目录中的所有项可以通过重复调用f_readdir函数被读取。
// 当所有目录项已被读取并且没有项要读取时,该函数没有任何错误地返回一个空字符串到
// f_name[]成员中。当FileInfo给定一个空指针时,目录对象的读索引将被回绕。
f_opendir(&dirs, "WSdir/file1");                
while(1)
{
  rese = f_readdir(&dirs, &finfo);
  if (res != FR_OK || finfo.fname[0] == 0) break;
  if(finfo.fattrib & AM_DIR) //显示文件夹名
  {
         LCD_ShowString(130,cnt,200,16,16,finfo.fname);
         cnt+=20;
  }
  else //显示文件名
  {
         LCD_ShowString(30,cnt2,200,16,16,finfo.fname);
     cnt2+=20;
  }
       
}       




0条回答

一周热门 更多>