我生成了个文件夹,用电脑却不能删除啊,为什么啊?
文件名是什么?
这个程序是例子中的,创建文件夹一定要这样吗?
uchar CreateDirectory() { UINT8 i, j; UINT16 count; UINT32 UpDirCluster,Ct; PUINT8X DirXramBuf; UINT8 code *DirConstData; j = 0xFF; for ( i = 0; i != sizeof( mCmdParam.Create.mPathName ); i ++ ) { /* 检查目录路径 */ if ( mCmdParam.Create.mPathName[ i ] == 0 ) break; if ( mCmdParam.Create.mPathName[ i ] == PATH_SEPAR_CHAR1 || mCmdParam.Create.mPathName[ i ] == PATH_SEPAR_CHAR2 ) j = i; /* 记录上级目录 */ } i = ERR_SUCCESS; if ( j == 0 || j == 2 && mCmdParam.Create.mPathName[1] == ':' ) UpDirCluster = 0; /* 在根目录下创建子目录 */ else { if ( j != 0xFF ) { /* 对于绝对路径应该获取上级目录的起始簇号 */ mCmdParam.Create.mPathName[ j ] = 0; i = CH375FileOpen( ); /* 打开上级目录 */ if ( i == ERR_SUCCESS ) i = ERR_MISS_DIR; /* 是文件而非目录 */ else if ( i == ERR_OPEN_DIR ) i = ERR_SUCCESS; /* 成功打开上级目录 */ mCmdParam.Create.mPathName[ j ] = PATH_SEPAR_CHAR1; /* 恢复目录分隔符 */ } UpDirCluster = CH375vStartCluster; /* 保存上级目录的起始簇号 */ } if ( i == ERR_SUCCESS ) { /* 成功获取上级目录的起始簇号 */ i = CH375FileOpen( ); /* 打开本级子目录 */ if ( i == ERR_SUCCESS ) i = ERR_FOUND_NAME; /* 是文件而非目录 */ else if ( i == ERR_OPEN_DIR ) i = ERR_SUCCESS; /* 目录已经存在 */ else if ( i == ERR_MISS_FILE ) { /* 目录不存在,可以新建 */ i = CH375FileCreate( ); /* 以创建文件的方法创建目录 */ if ( i == ERR_SUCCESS ) { // if ( &FILE_DATA_BUF[0] == &DISK_BASE_BUF[0] ) CH375DirtyBuffer( ); /* 如果FILE_DATA_BUF与DISK_BASE_BUF合用则必须清除磁盘缓冲区 */ for(Ct=0;Ct DirXramBuf = &FILE_DATA_BUF[0]; /* 文件数据缓冲区 */ DirConstData = ". \x10\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x21\x30\x0\x0\x0\x0\x0\x0.. \x10\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x21\x30\x0\x0\x0\x0\x0\x0"; for ( i = 0x40; i != 0; i -- ) { /* 目录的保留单元,分别指向自身和上级目录 */ *DirXramBuf = *DirConstData; DirXramBuf ++; DirConstData ++; } /* FILE_DATA_BUF[0x1A] = ( (PUINT8I)&CH375vStartCluster )[3]; FILE_DATA_BUF[0x1B] = ( (PUINT8I)&CH375vStartCluster )[2]; FILE_DATA_BUF[0x14] = ( (PUINT8I)&CH375vStartCluster )[1]; FILE_DATA_BUF[0x15] = ( (PUINT8I)&CH375vStartCluster )[0]; FILE_DATA_BUF[0x20+0x1A] = ( (PUINT8I)&UpDirCluster )[3]; FILE_DATA_BUF[0x20+0x1B] = ( (PUINT8I)&UpDirCluster )[2]; FILE_DATA_BUF[0x20+0x14] = ( (PUINT8I)&UpDirCluster )[1]; FILE_DATA_BUF[0x20+0x15] = ( (PUINT8I)&UpDirCluster )[0]; */ FILE_DATA_BUF[0x1A] = (UINT8)CH375vStartCluster; FILE_DATA_BUF[0x1B] = (UINT8)(CH375vStartCluster>>8); FILE_DATA_BUF[0x14] = (UINT8)(CH375vStartCluster>>16); FILE_DATA_BUF[0x15] = (UINT8)(CH375vStartCluster>>24); FILE_DATA_BUF[0x20+0x1A] = (UINT8)UpDirCluster; FILE_DATA_BUF[0x20+0x1B] = (UINT8)(UpDirCluster>>8); FILE_DATA_BUF[0x20+0x14] = (UINT8)(UpDirCluster>>16); FILE_DATA_BUF[0x20+0x15] = (UINT8)(UpDirCluster>>24); for ( count = 0x40; count != CH375vSectorSize; count ++ ) { /* 清空目录区剩余部分 */ *DirXramBuf = 0; DirXramBuf ++; } mCmdParam.Write.mSectorCount = 1; i = CH375FileWriteX( ); /* 写目录的第一个扇区 */ if ( i == ERR_SUCCESS ) { DirXramBuf = &FILE_DATA_BUF[0]; for ( i = 0x40; i != 0; i -- ) { /* 清空目录区 */ *DirXramBuf = 0; DirXramBuf ++; } for ( j = 1; j != CH375vSecPerClus; j ++ ) { // if ( &FILE_DATA_BUF[0] == &DISK_BASE_BUF[0] ) CH375DirtyBuffer( ); /* 如果FILE_DATA_BUF与DISK_BASE_BUF合用则必须清除磁盘缓冲区 */ mCmdParam.Write.mSectorCount = 1; i = CH375FileWriteX( ); /* 清空目录的剩余扇区 */ if ( i != ERR_SUCCESS ) break; } if ( j == CH375vSecPerClus ) { /* 成功清空目录 */ mCmdParam.Modify.mFileSize = 0; /* 目录的长度总是0 */ mCmdParam.Modify.mFileTime = MAKE_FILE_TIME(bcd_sec(Rtime[2]),bcd_sec(Rtime[1]),bcd_sec(Rtime[0])); mCmdParam.Modify.mFileDate = MAKE_FILE_DATE(bcd_sec(Rtime[6])+2000,bcd_sec(Rtime[5]),bcd_sec(Rtime[4])); mCmdParam.Modify.mFileAttr = 0x10; /* 置目录属性 */ i = CH375FileModify( ); /* 将文件信息修改为目录 */ } } } } } return( i ); }
不要,已在邮件中说明