文件 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)"
*/
}
```