关于文件的读写

 

 

    brew中对文件操作需要用到的API有:IFileMgr,IFile。IFileMgr用于创建实例,创建、打开文件;IFile负责读、写。

    本例子包含以下功能(对txt文件):
    1.检查文件是否存在,若存在,打开;不存在,创建。
    2.写入信息;
    3.读出信息。

    1.创建名为myfile的brew工程以及mif文件;
    //创建工程时,钩选File权限
    //mif文件的权限栏中,钩选File
    2.在结构体定义中添加IFileMgr和IFile的指针变量;
    3.在myfile_InitAppData中创建IFileMgr实例,处理异常;
    4.在myfile_HandleEvent中的EVT_APP_START下添加功能入口函数start;
    //在start里完成对文件的操作,如下
    5.用IFILEMGR_Test得知文件是否存在;
    6.用IFILEMGR_OpenFile获得IFile指针,存在则用“读写模式”,不存在用“创建模式”
    7.判断IFile指针是否为空,不为空则用IFILE_Write写入;
    8.检查IFILE_Write的返回值,确定写入是否成功;
    9.若成功,用IFILE_Read读出信息
    //读出的长度参数为IFILE_Write的返回值
    10.在myfile_FreeAppData中释放IFileMgr和IFile。

    以上是个简单的步骤,用于大家熟悉IFile的工作机制。下面来说说实际中可能的需求怎么实现:
    1.对多个文件操作
    只创建一个IFileMgr实例即可,再根据它创建多个IFile
    2.读取一行
    先把文件的内容全部读出(IFile_Read的长度参数设大点),存到pbuf[],然后通过查找字符串中的标志字符,为“行结束”定位(如/r/n),从而得到一行的值
    如果可以控制,最好约定文件内容的格式,那么只需要操作pbuf数组即可,简单许多
    若一次读不完,要用IFILE_Seek移动IFile指针的位置
    3.写入一行
    如果想每次写入一行,但又不确定写入的信息结尾是否有/n,可以在写入信息之前先写入一个/n
    4.只读不写
    首先IFILEMGR_Test,失败说明文件不存在,返回即可
    IFile_Open用“只读模式”
    5.文件的路径
    默认是在本工程文件夹。大部分手机上,扩展存储都会远远大于本机存储,如果brew程序有纪录的功能,就需要更大的存储空间。在MifEditor里和“权限”同级别的一栏可以设置在其他盘读写的权限。有点微妙,有时候显示,有时候不显示。同学们用心找找,总有一天会碰着的:)
    6.检查磁盘是否存满
    当然,如果磁盘满了,肯定就写不进去了。但也会死机,这是绝对不可以出现的。我们可以通过3种方法得到当前文件的大小:累加write的返回值;用IFILE_GetInfo得到FileInfo结构,其中有文件大小(如果仅仅想得到文件大小,不推荐使用IFILE_GetInfoEx,因为它返回AEEFileInfoEx结构体,很大);在没有打开文件的情况下,用IFILEMGR_GetInfo得到文件大小(不推荐IFILEMGR_GetInfoEx,理由同上)。
    7.不合作的模拟器
    写入在模拟器上是无法完成的,一执行就失败。在手机上可以正常工作。所以,大家要自信。
    读出在模拟器上没问题。
    改变默认路径,操作扩展卡,好像在模拟器上也是无法完成的,连创建文件都失败。原因查找中...    

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值