详见官网:http://elm-chan.org/fsw/ff/00index_e.html
FATFS是一个专为小型嵌入式系统调计的通用文件系统模块。FATFS是用ANSI C(标准C语言)相兼容的语法书写,并且完全地实现了与磁盘IO层分离,因此它是与硬件无关的。它完全不需要任何修改就能被集成到低成本的微控器(MCU)中,例如 AVR, 8051, PIC, ARM, Z80, 68k等。
FATFS分为全功能和精简版的
特性
与WINDOWS FAT相兼容的文件系统。
与平台无关,便于移植。
对代码存储器的大小和运行时所需RAM的大小及其它硬件性能要求很低,
所以FATFS可以很好地运用在低成本的嵌入式系统中。
多样化的配置
多卷标的支持(包含多磁盘和多分区)。
在DBCS中包含了多种OEM码页。
长文件名(LFN)支持,支持OEM码和UNICODE。
可集成到实时操作系统(RTOS)中。
多样化的扇区大小支持。
只读模式、最小化API、可配置的I/O缓冲等等。
应用层程序结口如下
f_mount - 注册和取消工作区
f_open - 打开或者创建文件
f_close -关闭一个文件
f_read - 从文件中读取数据
f_write -向 文件中写入数据
f_lseek - 移动文件读指针(RP),扩展文件大小
f_truncate - 缩减文件大小
f_sync - 清空缓存数据,实现数据同步
f_opendir - 打开一个目录
f_readdir - 列举目录中的条目(包括文件和子目录)。
f_getfree - 获取可用簇
f_stat - 获取文件属性
f_mkdir - 创建文件
f_unlink - 删除文件或者目录
f_chmod - 更改属性
f_utime -更改时间戳
f_rename - 重命名或者移动一个文件或目录
f_mkfs - 格式化磁盘
f_forward - 将文件数据直接送入数据流中
f_chdir - 改变当前所在目录
f_chdrive - 改变当前所在驱动器
f_gets -读字符串
f_putc - 写一个字符
f_puts - 写字符串
f_printf - 写入一个格式化字符串
磁盘I/O接口
disk_initialize - 磁盘初始化
disk_status - 获取磁盘属性
disk_read - 读扇区
disk_write - 写扇区
disk_ioctl - 独立的磁盘控制资源
get_fattime - 获取时间
相关资源
FATFS是一个免费的开源软件,可用于教学,研究和开发。
你可以任意地修改或者发布它,你能够无限制的在非盈利或者商业产品中使用它。
你能在本文上方的下载链接中获取最新版本。
f_open
创建/打开一个用于访问文件的文件对象
FRESULT f_open (
FIL* FileObject, /* 空白文件对象结构指针 */
const XCHAR* FileName, /* 文件名指针 */
BYTE ModeFlags /* 模式标志 */
);
参数
FileObject
将被创建的文件对象结构的指针。
FileName
NULL结尾的字符串指针,该字符串指定了将被创建或打开的文件名。
ModeFlags
指定文件的访问类型和打开方法。它是由下列标志的一个组合指定的。
模式 描述
FA_READ 指定读访问对象。可以从文件中读取数据。
与FA_WRITE结合可以进行读写访问。
FA_WRITE 指定写访问对象。可以向文件中写入数据。
与FA_READ结合可以进行读写访问。
FA_OPEN_EXISTING 打开文件。如果文件不存在,则打开失败。(默认)
FA_OPEN_ALWAYS 如果文件存在,则打开;否则,创建一个新文件。
FA_CREATE_NEW 创建一个新文件。如果文件已存在,则创建失败。
FA_CREATE_ALWAYS 创建一个新文件。如果文件已存在,则它将被截断并覆盖。
注意:当 _FS_READONLY == 1 时,模式标志 FA_WRITE, FA_CREATE_ALWAYS, FA_CREATE_NEW, FA_OPEN_ALWAYS 是无效的。
例:
sprintf(name,"Pen_%03d.pen",iFile);
//如果文件存在,则打开;否则,创建一个新文件。 且文件读和写
f_res = f_open(&file, name, FA_OPEN_ALWAYS | FA_WRITE | FA_READ); //FA_CREATE_ALWAYS FA_CREATE_NEW