OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4050|回复: 0

Fatfs简单的操作方法

[复制链接]

9

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
397
金钱
397
注册时间
2016-6-21
在线时间
107 小时
发表于 2017-3-15 17:02:22 | 显示全部楼层 |阅读模式
学习记录
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;
  }
       
}       




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 21:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表