CH375数据覆盖问题

顺序改写文件(覆盖原数据,超过原文件长度后转变为追加数据) ⑴ CH375FileOpen,打开文件 ⑵ 多次 CH375FileWrite 或 CH375ByteWrite,写入数据 ⑶ 如果是追加数据导致文件长度增大,那么需要参考修改文件长度的几种方法 ⑷ CH375FileClose,关闭文件,如果是字节模式,将自动更新文件长度

我看网上的例子程序(串行方式)每次往U盘写入数据是追加的,怎么才能每次都重新写入数据呢,而不是追加,如果按上面的步骤写入后,在U盘中打不开所写的文件了。

还有就是如何把文件换个名字呢?我的程序现在是用例子程序的文件名好使,换个名字就不行了!

指指教,谢谢!

每次打开文件之后 文件指针变量 是在文件的开头,如果写入数据,则将覆盖原有的数据 如果要追加数据 需要先移动文件末尾,然后在写入新的数据,关闭文件的时候要更新文件长度 在以扇区方式追加数据的时候,要先将文件末尾不足整扇区的数据读取之后,与要追加的数据一起写进去。


我试了一下把文件指针变量=0后,每次写入文件的数据是从文件开头开始的,但是,如果写入的数据小于上次写入的数据则多出的数据还是保留的,这些没用的数据如何去掉呢?


写完后调用FileModify修文件长度为你实际写入的数据量即可,这样那些无效数据是没法访问的,不过仍保存在U盘,如果想彻底删除,只要调用FileErase才行。


我问一下,字节方式的读写,执行关闭程序的命令后不就自动更新文件长度了吗?还用FileModify命令吗?


这个和CH375LibConfig变量有关系. 建议按照如下方式修改文件长度: mCmdParam.Modify.mFileAttr = 0xff; /* 输入参数: 新的文件属性,为0FFH则不修改 */ mCmdParam.Modify.mFileTime = 0xffff; /* 输入参数: 新的文件时间,为0FFFFH则不修改,使用新建文件产生的默认时间 */ mCmdParam.Modify.mFileDate = MAKE_FILE_DATE( 2004, 5, 18 ); /* 输入参数: 新的文件日期: 2004.05.18 */ mCmdParam.Modify.mFileSize = NewSize(文件长度); /* 输入参数: 如果原文件较小,那么新的文件长度与原文件一样长,否则被RAM所限,如果文件长度大于64KB,那么NewSize必须为UINT32 */ i = CH375FileModify( ); /* 修改当前文件的信息,修改日期和长度 */


“打开一个有数据的文件,对文件写入数据后,如果是覆盖了原数据,那么文件长度可能不发生变化,当超过原文件长度后,变为追加数据,那么文件长度应该发生变化(增大)。” CH375HF.PDF中“4.2. 文件长度”有详细的描述。


只有登录才能回复,可以选择微信账号登录