追加数据的方法,最主要的是使用f_lseek函数,但使用此函数时,我还是碰到不少的问题,现将自己在调试中碰到的事项分享给大家:
1.为了追加数据,必须获取原文件的长度,可用f_size函数,如下代码:
res = f_open(&fsrc, (const TCHAR *)DataFile, FA_OPEN_EXISTING | FA_READ);
FileSize = f_size(&fsrc);
2.为了写数据,必须以写的方式再打开一次文件
res=f_open(&fsrc,"0.txt", FA_CREATE_ALWAYS | FA_WRITE);
3.偏移指针,需要注意的是,空的TXT,用f_size也会产生长度值,如果把这个偏移量也加入的话,TXT开头就会出现乱码,为此需要判断是否是空件
if(FileSize>50)res=f_lseek(&fsrc,FileSize);
经过以上处理后,就可以直接使用f_write写函数了,在关闭文件前,可以重复使用写函数,而不必考虑指针偏移,如以下代码
res = f_write(&fsrc, TFData,26,&bw);
res = f_write(&fsrc, TFData,26,&bw);