51如何創(chuàng)建目錄? 我copy(mPathName, "abc/dat.dat"), creat后返回ERR_MISS_DIR,即是沒有該abc目錄。沒有創(chuàng)建目錄的指令?類似于creat file函數(shù)?
我手動(dòng)創(chuàng)建了目錄F080709,然后往/F080709/D16.DAT寫數(shù)寫不進(jìn)去,連D16.DAT文件都沒有建。奇怪?
51如何創(chuàng)建目錄? 我copy(mPathName, "abc/dat.dat"), creat后返回ERR_MISS_DIR,即是沒有該abc目錄。沒有創(chuàng)建目錄的指令?類似于creat file函數(shù)?
我手動(dòng)創(chuàng)建了目錄F080709,然后往/F080709/D16.DAT寫數(shù)寫不進(jìn)去,連D16.DAT文件都沒有建。奇怪?
(1)庫里面沒有直接創(chuàng)建目錄的,目錄的創(chuàng)建方法可以參考EXAM9 (2)把D16.DAT文件創(chuàng)建的過程貼出來看看
創(chuàng)建D16.DAT的代碼如下,其中DateTime[]中是年月日小時(shí)的BCD碼。就是上面的08 07 09 16(08年7月9日16點(diǎn))。我手動(dòng)創(chuàng)建了D080709文件目錄,然后執(zhí)行下面代碼。結(jié)果D16.DAT創(chuàng)建失敗。執(zhí)行i=CH375FileCreate()返回也對了,就是文件夾目錄里沒有D16.DAT文件。
//----------------------- sprintf(mCmdParam.Open.mPathName, "/F%02bx%02bx%02bx/D%02bx.DAT", DateTime[0], DateTime[1], DateTime[2], DateTime[3]); i = CH375FileOpen(); if(i == ERR_SUCCESS) // 文件打開 { mCmdParam.Locate.mSectorOffset = 0xFFFFFFFF; i = CH375FileLocate(); mStopIfError(i);
resDataNum = CH375vFileSize & (CH375vSectorSize - 1);
CH375vFileSize += CH375vSectorSize - 1; mCmdParam.Read.mSectorCount = 1; mCmdParam.ReadX.mDataBuffer = &my_buffer[0]; // - resDataNum; i = CH375FileReadX(); mStopIfError(i); CH375vFileSize -= CH375vSectorSize - 1; mCopyXRAMtoXRAM(&my_buffer[1024] - resDataNum, &my_buffer[0], resDataNum); mCmdParam.Locate.mSectorOffset = 0xFFFFFFFF; i = CH375FileLocate(); mStopIfError(i); } /* else if(i == ERR_MISS_DIR) // 目錄不存在 { sprintf(mCmdParam.DirCreate.mPathName, "/F%02bx%02bx%02bx", DateTime[0], DateTime[1], DateTime[2]);
} */ else if(i == ERR_MISS_FILE) // 文件不存在 { LED_WR_ACT(); i = CH375FileCreate(); mStopIfError(i); SendString("File Created \n"); resDataNum = 0; } else // 其他錯(cuò)誤 { mStopIfError(i); }
參照exam9, 搞定。呵呵~~~ 謝謝!
可以創(chuàng)建的,只是不知道DateTime[0]-DateTime[3]是如何賦值的 試驗(yàn)時(shí),其賦值如下即可: DateTime[0] = 0x08; DateTime[1] = 0x07; DateTime[2] = 0x09; DateTime[3] = 0x16;
對 啊, 就是那樣的。 好像是在目錄下創(chuàng)建文件前先要打開目錄? 不過我參照exam9后創(chuàng)建的目錄又可以在目錄下創(chuàng)建文件了。
不需要打開目錄,下面是實(shí)驗(yàn)的程序: DateTime[0] = 0x08; DateTime[1] = 0x07; DateTime[2] = 0x09; DateTime[3] = 0x16;
sprintf(mCmdParam.Open.mPathName, "/F%02bx%02bx%02bx/D%02bx.DAT", DateTime[0], DateTime[1], DateTime[2], DateTime[3]); printf("%s\n",mCmdParam.Open.mPathName ); i = CH375FileOpen(); if(i == ERR_SUCCESS) // 文件打開 { mCmdParam.Locate.mSectorOffset = 0xFFFFFFFF; i = CH375FileLocate(); mStopIfError(i);
// resDataNum = CH375vFileSize & (CH375vSectorSize - 1); CH375vFileSize += CH375vSectorSize - 1; mCmdParam.Read.mSectorCount = 1; mCmdParam.ReadX.mDataBuffer = &my_buffer[0]; // - resDataNum; i = CH375FileReadX(); mStopIfError(i); CH375vFileSize -= CH375vSectorSize - 1; // mCopyXRAMtoXRAM(&my_buffer[1024] - resDataNum, &my_buffer[0], resDataNum); mCmdParam.Locate.mSectorOffset = 0xFFFFFFFF; i = CH375FileLocate(); mStopIfError(i); } /* else if(i == ERR_MISS_DIR) // 目錄不存在 { sprintf(mCmdParam.DirCreate.mPathName, "/F%02bx%02bx%02bx", DateTime[0], DateTime[1], DateTime[2]);
} */ else if(i == ERR_MISS_FILE) // 文件不存在 { printf("create\n"); LED_WR_ACT(); i = CH375FileCreate(); mStopIfError(i); // SendString("File Created \n"); // resDataNum = 0; } else // 其他錯(cuò)誤 { mStopIfError(i); }
您這個(gè)是手動(dòng)建了文件夾后再建文件的么?
是的,照著你2樓中的說明做的