3817|2

324

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

如何在FAT文件系统中实现续写一个文件 [复制链接]

最近在用LM3S8962进行文件系统的操作,可以实现对文件读写操作,但发现了一个问题,用如下代码只能实现在SD卡中一行数据:

while(1)

{     

       f_mount(0, &fs);
      res = f_open(&fdst, "dstfile.txt", FA_OPEN_ALWAYS | FA_WRITE);
      int len = strlen(buffer);
      res = f_write(&fdst, buffer,len , &bw);
      f_sync(&fdst);         
      f_close(&fdst);
      f_mount(0, NULL);

}

结果在SD卡中只有一行数据

      f_mount(0, &fs);
      res = f_open(&fdst, "dstfile.txt", FA_OPEN_ALWAYS | FA_WRITE);
      int len = strlen(buffer);

      while(1)

     {

         res = f_write(&fdst, buffer,len , &bw);
          f_sync(&fdst); 

     }              
      f_close(&fdst);
      f_mount(0, NULL);

可以实现多行的写操作。我想实现的是,对一个文件进行续写,比如说一个文件现在里面有1K的数据,现在对这个文件进行续写,但是不能将以前的内容覆盖掉。如何实现,请教下高手。

最新回复

可能需要在用  fs_open 打开文件以后,调用 f_lseek,具体可以看一下 f_lseek 函数的用法。  详情 回复 发表于 2012-1-11 21:25
 
点赞 关注

回复
举报

1803

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

回复 楼主 zheng522 的帖子

可能需要在用  fs_open 打开文件以后,调用 f_lseek,具体可以看一下 f_lseek 函数的用法。
 
 

回复

324

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

谢谢楼上的帮忙,我已经实现了想要的功能,谢谢。以下是我实现的代码。主程序:

int main(void)
{
    static FATFS fs;            // Work area (file system object) for logical drive
    static FIL  fdst;      // fsrc,file objects
    static BYTE buffer[4096] = {"123\n"};   // file copy buffer
    static FRESULT res;         // FatFs function common result code
    static WORD bw;         // File R/W countbr,
    int k = 5,j = 5;   
    SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC |
                   SYSCTL_XTAL_8MHZ | SYSCTL_OSC_MAIN);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
    while(k--)
    {
      f_mount(0, &fs);
      res = f_open(&fdst, "dstfile.txt", FA_OPEN_ALWAYS | FA_WRITE);
      res = f_lseek(&fdst, fdst.fsize);
      int len = strlen(buffer);
      while(5)
      {
        res = f_write(&fdst, buffer,len , &bw);
        f_sync(&fdst);
      }
              
      f_close(&fdst);
      f_mount(0, NULL);
    }
    while(1);
}

[ 本帖最后由 zheng522 于 2012-1-12 13:40 编辑 ]
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表