如何在FAT文件系统中实现续写一个文件

2019-03-24 15:03发布

最近在用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的数据,现在对这个文件进行续写,但是不能将以前的内容覆盖掉。如何实现,请教下高手。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
zheng522
2019-03-25 03:30
< :TI_MSP430_内容页_SA7 -->

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

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 "};   // 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 编辑 ]

一周热门 更多>

相关问题

    相关文章