文件 demo

```language #include "amaziot.h" #define USER_TASK_STACK_SIZE (2048) #define USER_TASK_PRIORITY (COS_USER_TASKS_PRIORITY_BASE) void UserTask(void *p_arg); /* add user task here */ VOID UserCreateTask(void) { sxr_StartFunctionTimer(1000 MILLI_SECONDS,UserTask,(VOID*)NULL,0x03); } void UserTask(void *p_arg) { AT_WriteUart("FileTask Runing\r\n", strlen("FileTask Runing\r\n")); const char *pathname = "/testfile"; UINT8* writebuf = "this is an example!"; UINT8 readbuf[30] = {0}; INT32 len; int ret = 0; struct stat filest; //打开/创建文件 vfs_open int fd = vfs_open(pathname, O_RDWR | O_CREAT | O_TRUNC, 0); if(fd < 0) { AT_TC(10,"INFO: vfs_open (%s) failed", pathname); return; } AT_TC(10,"INFO: vfs_open (%s) fd=%d", pathname,fd); //写文件 vfs_write len = vfs_write(fd, writebuf, strlen(writebuf)); if(len < 0) { AT_TC(10,"INFO: vfs_write failed"); return; } AT_TC(10,"INFO: vfs_write (%s),len=%d", pathname,len); //获取文件信息(大小)vfs_fstat ret = vfs_fstat(fd, &filest); if(ret < 0) { AT_TC(10,"INFO: vfs_fstat failed"); return; } AT_TC(10,"INFO: vfs_fstat (%s),fielsize=%d", pathname,filest.st_size); //文件偏移 vfs_lseek ret = vfs_lseek(fd, 0, SEEK_SET); if(ret < 0) { AT_TC(10,"INFO: vfs_lseek failed"); return; } //读文件 vfs_read len = vfs_read(fd, readbuf, filest.st_size); if(len < 0) { AT_TC(10,"INFO: vfs_read failed,len=%d",len); return; } AT_TC(10,"INFO: vfs_read (%s),len=%d,buf (%s)", pathname,len,readbuf); //关闭文件 vfs_close ret = vfs_close(fd); AT_TC(10,"INFO: closedir %d (%s)", ret, pathname); /* 输出 Trace 信息如下: AT 10 : [AT]>>"INFO: vfs_open (/testfile) fd=1027" AT 10 : [AT]>>"INFO: vfs_write (/testfile),len=19" AT 10 : [AT]>>"INFO: vfs_fstat (/testfile),fielsize=19" AT 10 : [AT]>>"INFO: vfs_read (/testfile),len=19,buf (this is an example!)" AT 10 : [AT]>>"INFO: closedir 0 (/testfile)" */ } ```