3. 文件系统
3.1. 概述
提供文件系统部分相关API。
3.2. 常用文件系统库接口函数
3.2.1. fopen
打开文件
原型:
SDFILE *fopen(const char *path, const char *mode);
参数:
path
文件路径
mode
打开模式(只读(“r”),写(“w”),可创建(“w+”))
Note
fopen 扩展功能
自动打开、创建文件夹和文件。
说明:
设备路径+文件,其中文件传入格式:”mnt/sdfile/res/tone/0.ump3”
文件名带*号,带多少个*表示多少个可变数字,最多为8+3的大小,如表示可变数字名称变为XXX0001,XXXX002这样得格式,不带*号则只创建一个文件,写覆盖。
date: 2020-07-22
示例:
SDFILE *decode_file = fopen("mnt/sdfile/res/tone/0.ump3", "r");
3.2.2. fclose
关闭文件
原型:
int fclose(SDFILE *file);
参数:
file
文件句柄
示例:
SDFILE *decode_file = fopen("mnt/sdfile/res/tone/0.ump3", "r");
fclose(decode_file);
3.2.3. fread
从文件中读取数据
原型:
int fread(SDFILE *fp, void *buf, u32 len);
参数:
buf
保存读取到的数据
len
读取字节数
file
指向文件流的文件指针
示例:
SDFILE *decode_file = fopen("mnt/sdfile/res/tone/0.ump3", "r");
fread(decode_file, buf, len);
3.2.4. fwrite
写入数据到文件中
原型:
int fwrite(SDFILE *fp, void *buf, u32 len);
参数:
buf
需要写入的数据
size
每次写入字节数
count
总共写入次数
file
指向文件流的文件指针
示例:
SDFILE *decode_file = fopen("mnt/sdfile/res/tone/0.ump3", "r");
fwrite(decode_file, buf, len);
3.2.5. fseek
Seek到相应得位置
原型:
int fseek(SDFILE *file, int offset, int fromwhere);
参数:
file
文件句柄
offset
偏移量
fromwhere
偏移方式
示例:
SDFILE *decode_file = fopen("mnt/sdfile/res/tone/0.ump3", "r");
fseek(decode_file, 0, SEEK_SET);
3.2.6. flen
获取文件长度
原型:
int flen(SDFILE *file);
参数:
file
文件句柄
示例:
len = flen(file);
3.2.7. fget_name
获取当前文件名称
原型:
int fget_name(SDFILE *file, u8 *name, int len);
参数:
file
文件句柄
name
文件名buf
len
长度
示例:
char lfn_buf[512] = {0};
int lfn_len = fget_name(file, lfn_buf, 512);
3.2.8. fget_attrs
获取文件相关信息
原型:
int fget_attrs(SDFILE *file, struct vfs_attr *attr);//获得文件相关信息如属性、簇号、大小等
参数:
file
文件句柄
attr
属性
示例:
FILE *fp = NULL;
struct vfs_attr param_attr = {0};
char path[36] = "storage/sd0/C/123.mp3";
//===============================//
// 打开参数文件 //
//===============================//
fp = fopen(path, "r");
if (!fp) {
return -ENOENT;
}
fget_attrs(fp, ¶m_attr);
param_len = param_attr.fsize;
param_ptr = (u8 *)param_attr.sclust; //cpu access addr
fclose(fp);