使用FATFS修改完文本在写进去

我想把一个文本内容读出来,修改完以后在写进去。测试已经可以读出来修改了,但是写进去的时候遇到了一些问题,
开始的时候没有移动文件指针,写进去的数据在原文文件后面追加了。后来使用f_lseek(f_check,0);把指针移到最开始,然后在写进去,这次发现如果写的文件长度小于原来的文件长度,会造成原来的文件留下一点,没有完全覆盖。
后来查看FATFS的文档发现了一个截断文件函数:

FRESULT f_truncate (
FIL* FileObject /* Pointer to the file object */
);
函数说明:
1. 此函数可以在将文件在当前指针处截断
2. 参数说明:
a) *FileObject : 指向文件对象结构体的指针
3. 此函数可以截断文件,也可以延长文件长度
操作示例:

res = f_open (&fsrc ,"news/news.txt", FA_WRITE);

res = f_lseek (&fsrc , 60);//指针指向第 60 个字节

res = f_truncate (&fsrc );//将文件在此截断

res = f_sync ( &fsrc );//关闭文件

我工程使用示例:
//移动文件到开头
f_lseek(f_check,0);
res = f_write(f_check,(char*)g_arrUart2RecvBuf, (UINT)strlen((char*)g_arrUart2RecvBuf), (UINT*)&write);        //写入目的文件
 if(write {
  res = f_lseek (f_check , write); //指针移动
 res = f_truncate (f_check ); //截断后面的文件
 res = f_sync ( f_check ); //刷新关闭文件
}
else
{
  f_close(f_check);                //关闭文件 
 }

这样在修改完内容后写进后判断一下是否需要截断文档后面无效的数据。

你可能感兴趣的:(C语言,STM32F4,FATFS)