STM32读写TXT文件(可追加数据)的示例代码
来源:互联网 发布:大数据论坛 有哪些 编辑:程序博客网 时间:2024/06/11 15:26
- /*
- 说明:
- * 下面的函数是测试在已有的"大海.txt"文件下继续添加数据
- * 测试条件在TF卡中建立"大海.txt"文件,并在文件中添加内容,测试过程中可以分别添加<512数据,=512数据,>512数据进行分别测试
- * 作者:Flame
- * 测试时间:20130711
- */
- unsigned int FATFSNumSize;//文件大小存储变量,为了查看方便放到函数外部
- void OutPutFile(void)
- {
- unsigned int a;
- FILINFO finfo;
- DIR dirs;
- char path[50]={""}; //目录名为空,表示是根目录
- //开启长文件名功能时, 要预先初始化文件名缓冲区的长度
- #if _USE_LFN
- static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1];
- finfo.lfname = lfn;
- finfo.lfsize = sizeof(lfn);
- #endif
- USART_OUT(USART1,"\nSTM32开发板文件系统(Tini-FatFS0.08b)启动成功! \n");
- disk_initialize(0); //fatfs可以管理多个介质的分区, 所以把物理存储介质SST25VF016B标示为0区,相当于磁盘编号
- f_mount(0, &fs); //将文件系统设置到0区
- if (f_opendir(&dirs, path) == FR_OK) //读取该磁盘的根目录
- {
- while (f_readdir(&dirs, &finfo) == FR_OK) //循环依次读取文件名
- {
- if (finfo.fattrib & AM_ARC) //判断文件属性是否为存档型 TXT文件一般都为存档型
- {
- if(!finfo.fname[0]) break; //如果是文件名为空表示到目录的末尾。退出
- if(finfo.lfname[0]){USART_OUT(USART1,"\r\n文件名是:\n %s\n",finfo.lfname);} //输出长文件名
- else{USART_OUT(USART1,"\r\n文件名是:\n %s\n",finfo.fname);} //输出8.3格式文件名
- if(finfo.lfname[0]){res = f_open(&fsrc, finfo.lfname, FA_OPEN_EXISTING | FA_READ);}//以读的方式打开文件
- else{res = f_open(&fsrc, finfo.fname, FA_OPEN_EXISTING | FA_READ); } //8.3格式文件名 以读的方式打开文件
- FATFSNumSize = f_size(&fsrc); //读出文件的大小,说明读取文件大小必须在打开文件后才能读出
- br=1;
- for (;;)
- { //循环读出被打开文件的扇区
- for(a=0; a<512; a++) buffer[a]=0; //因为可以一次读出512字节,先清空数据缓冲区
- res = f_read(&fsrc, buffer, sizeof(buffer), &br); //将文件内容读出到数据缓冲区 br存储此次读出数据的数量,最大512
- USART_OUT(USART1,"%s\n",buffer); //将缓冲区的内容输出到串口1
- if (res || br == 0) break; // error or eof //判断是否到文件结束
- }
- f_close(&fsrc); //关闭源文件
- res1 = f_open(&fdst, "大海.txt", FA_CREATE_ALWAYS | FA_WRITE); //以写的方式打开"大海.txt"文件
- if(finfo.lfname[0])
- {
- res = f_open(&fsrc, finfo.lfname, FA_CREATE_ALWAYS | FA_WRITE); //以写的方式打开文件
- } else {
- res = f_open(&fsrc, finfo.fname, FA_CREATE_ALWAYS | FA_WRITE); //8.3格式文件名 以写的方式打开文件
- }
- for(a=0; a<512; a++) buffer[a]=0x36; //往buffer中写入512个6
- f_lseek(&fsrc,FATFSNumSize); //偏移到打开文件内容的后面
- //在这里要重点说明的是如果numSize<512将会把数据覆盖,如果numSize>512切numSize%512得到的余数将会覆盖,所有如果numSize不是512的整倍数,要单独做处理
- //我的方法是读取这不到1个扇区的数据,放到缓冲区,然后将512-numSize%512的数据填入缓冲区,写入TF(SD)卡数据,然后再写剩余的数据
- br=512; //写入512个数据
- res1 = f_write(&fsrc, buffer, br, &bw); f_close(&fsrc);//关闭目标文件 本条函数即时保存写入的数据,又是关闭目标文件,如有很多数据要写入,但不需要现在关闭可以调用f_sync函数,但是调用 f_sync前必把S_READONLY == 0可用
- }
- }
- }
- }
阅读全文
2 0
- STM32读写TXT文件(可追加数据)的示例代码
- STM32读写TXT时追加数据的方法
- Java 文件读写(txt类型读写并追加内容)
- c读写txt文件示例
- java 文件的读写,追加
- 数据存储(3):将数据以txt文件存储在本地,多个apk都可进行读写
- C# MySql 读写数据的示例代码
- vc++向txt文件中写入数据,追加数据
- cv.Mat 与 .txt 文件数据的读写操作
- C#:TXT文件读写(VS2010窗体+代码)
- OpenCV学习笔记(23)cv.Mat 与 .txt 文件数据的读写操作
- VB 读写追加文件
- Java读写txt文件-Java读写文件(txt)
- Txt文件读写(一)
- ASP.NET读写XML文件的示例代码
- Python中的文件IO操作(读写文件、追加文件)
- jxl读写excel追加数据
- asp.net 读写xml文件示例代码
- hdu 5876 Sparse Graph 完全图补图最短路
- 文章发布系统
- 6个变态的C语言HELLO WORLD程序
- 后缀为axd 的文件
- 区块链中的数学思想概述
- STM32读写TXT文件(可追加数据)的示例代码
- Android学习——在线查看android源代码的3种方式
- Minimum Depth of Binary Tree
- “不能打开文件mk:@*.chm”怎么办?——提供一种windows7上打不开chm的解决方法
- Android 使用贝塞尔和PathMeasure绘画心形路径
- 转测试小结
- C++ 线程池
- 66. Plus One
- Git 命令的使用