高中生
最后登录1970-1-1
在线时间 小时
注册时间2017-2-16
|
第一个问题
在打开文件第一次写入数据之后我调用了f_lseek(&fnew,f_size(&fnew)) 把指针指向了文件的最后
然后重新写入了一个数据
在读取的时候,读取的数据大小是正确的,但是得出来的ReadBuffer只显示第一次写入的数据
第二个问题
如果写入一次数据,关闭文件,再写入一次数据的话,那么读出来的数据只有一个,也就是后面一次数据把第一次的给覆盖了
求大神解答是哪里除了问题啊
以下是代码
printf("\r\n****** 即将进行文件写入测试... ******\r\n");
res_sd = f_open(&fnew, "0:FatFsWRTest.txt",FA_CREATE_ALWAYS | FA_WRITE );
if ( res_sd == FR_OK )
{
printf("》打开/创建FatFs读写测试文件.txt文件成功,向文件写入数据。\r\n");
/* 将指定存储区内容写入到文件内 */
res_sd=f_write(&fnew,WriteBuffer,sizeof(WriteBuffer),&fnum);
if(res_sd==FR_OK)
{
printf("》文件写入成功,写入字节数据:%d\n",fnum);
printf("》向文件写入第一组数据为:\r\n%x\r\n",*WriteBuffer);
}
else
{
printf("!!文件写入失败:(%d)\n",res_sd);
}
fnum = f_size(&fnew);
res_sd = f_lseek(&fnew,fnum);
if ( res_sd == FR_OK )
{
res_sd=f_write(&fnew,WriteBuffer,sizeof(WriteBuffer),&fnum);
if(res_sd==FR_OK)
{
printf("》文件写入成功,写入字节数据:%d\n",fnum);
printf("》向文件写入第一组数据为:\r\n%x\r\n",*WriteBuffer);
}
else
{
printf("!!文件写入失败:(%d)\n",res_sd);
}
}
/* 不再读写,关闭文件 */
f_close(&fnew);
}
else
{
LED_RED;
printf("!!打开/创建文件失败。\r\n");
}
/*------------------- 文件系统测试:读测试 ------------------------------------*/
printf("****** 即将进行文件读取测试... ******\r\n");
res_sd = f_open(&fnew, "0:FatFsWRTest.txt", FA_OPEN_EXISTING | FA_READ);
if(res_sd == FR_OK)
{
LED_GREEN;
printf("》打开文件成功。\r\n");
res_sd = f_read(&fnew, ReadBuffer, f_size(&fnew), &fnum);
if(res_sd==FR_OK)
{
printf("》文件读取成功,读到字节数据:%d\r\n",fnum);
printf("》读取得的文件数据为:\r\n %x \r\n", *ReadBuffer);
}
else
{
printf("!!文件读取失败:(%d)\n",res_sd);
}
}
else
{
LED_RED;
printf("!!打开文件失败。\r\n");
}
/* 不再读写,关闭文件 */
f_close(&fnew);
/* 不再使用文件系统,取消挂载文件系统 */
f_mount(NULL,"0:",1);
/* 操作完成,停机 */
while(1)
{
} |
|