[求助]文件删除不掉???

本人用CH375 与 W77E516 通过IO口模拟并口实现对U盘的读写操作 基本上实现了 对U盘的读写 有个问题就是 当文件名一样的时候不能实现先删除在创建的功能 直接执行i = CH375FileCreate( );进行覆盖已有的文件,但是从U盘里读出的文本并没有被覆盖 不知道是什么原因

你所说的没有被覆盖具体什么意思?是文件的内容一样还是你把你要写的数据没有写进去?


比如我已经建一个文本命名为12345678.txt 在里面写入 123 当我在执行i = CH375FileCreate( );时候 要它也命名为12345678.txt 在里面写456 但是结果是 命名为12345678.txt 但是内容还是123 要是手动把U盘的12345678.txt删掉 在写才能得到想要的结果


1、文件名必须大写(12345678.TXT),否则可能有意外错误出现 2、FileCreate的返回值有没有判断呢?


我是大写的 而且FileCreate的返回值也是‘0’ 但文件名一样的时候 就必须手动删除才能写进来


创建文件如下:请高手指点一下 void FilenameCreate(UINT8 *fname,UINT8 *filenamefm,UINT8 length) { UINT8 i; UINT16 lenfm = 0; lenfm = sprintf(filenamefm,"/"); for(i=0;i { lenfm += sprintf(filenamefm + lenfm,"%i",(int)fname[i]); } lenfm += sprintf(filenamefm + lenfm,".TXT"); memcpy(mCmdParam.Open.mPathName,filenamefm,lenfm); i = CH375FileCreate(); /* 新建文件并打开,如果文件已经存在则先删除后再新建 */ mStopIfError(i); }


程序上面应该没有问题,你确认下在你创建好文件之后在关闭文件,看下文件长度是多少?还有你确认下在你创建的时候“mCmdParam.Open.mPathName”的值是多少?


现在发现个问题 如楼上所说做了个实验 创建好文件 在写如数据后 在关闭文件 文件长度CH375vFileSize还是0 但是 用电脑可以读出U盘里面已经存有正确的数据 不知道是为什么 mCmdParam.Close.mUpdateLen = 1; i = CH375FileClose( ); /* 关闭文件 */ mStopIfError( i ); 我用的上面的更新文件长度


CH375FileClose( ); /* 关闭当前文件 */ 对于写操作,关闭文 件的同时,可以让子程序自动更新文件长度。在扇区模式下,自动更新的文件长度是以扇区为单 位计算的,所以文件长度通常是CH375vSectorSize 的倍数,mCmdParam.Close.mUpdateLen 为1 时自动更新文件长度(如果已经对该文件执行写操作添加了数据),为0 时不要自动更新文件长度。 在字节模式下,自动更新的文件长度是以字节为单位,所以可以获得适当的长度。在扇区模式下, 如果希望文件长度不是CH375vSectorSize 的倍数,那么单片机可以在关闭文件前调用 CH375FileModify 修改文件为指定的长度,并且在关闭文件时指定不要自动更新文件长度。对于 以字节为单位的文件读写,关闭文件时能够自动更新为适当的文件长度,所以不需要调用 CH375FileModify 修改文件长度。

CH375vFileSize这个变量是在你创建文件的时候赋值为0的,在你写文件的过程中,这个变量并没有更新。再说如果文件长度小于一个扇区的话可能更新会有问题。推荐用下面的方法:

printf( "Modify\n" ); 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 = 0xffffffff; 输入参数: 新的文件长度,以字节为单位写文件应该由程序库关闭文件时自动更新长度,所以此处不修改 i = CH375FileModify( ); 修改当前文件的信息,修改日期 mStopIfError( i );


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