我正在使用C ++开发Windows Embedded Compact 7的应用程序。我刚刚遇到的问题是,我在应用程序中创建的.ini设置文件和.txt日志文件以及放置在\ Mounted Volume(非易失性分区)上的.txt日志文件将在重新启动时被删除。 / p>
应用程序正在打开.ini文件,编辑值,保存文件,下次启动时,我会更新设置。直到最近一次重大软件更新后我才开始遇到问题。但是在更新期间没有触及处理文件打开和关闭的特定功能。
虽然它似乎与我的应用程序以及我打开/编辑/保存/关闭文件的方式有关,因为如果我用Wordpad打开.ini文件并手动编辑值然后保存它,则设置保存在重启。我还对所有函数进行了适当的错误处理,并且没有发生错误。
我在MSDN上读到可能需要“刷新”开放缓冲区。可能我需要这样做?我真的希望有人处理Windows嵌入式/ CE,并且可能遇到类似非易失性文件分区的问题,更像是易失性内存。
感谢您的帮助!这是我用来写入日志文件的代码,它与写入.ini文件的代码基本相同:
int writeLogFile(const char* szString)
{
FILE* pFile;
if((pFile = fopen("\\Mounted Volume\\logFile.txt", "a+")) == NULL )
debugMessage("Function: writeLogFile - Error! Could not open logFile.txt\n\r");
else
debugMessage("Function: writeLogFile - Notice. Opened logFile.txt\n\r");
if(fprintf(pFile, "%s\r",szString) < 0)
debugMessage("Function: writeLogFile - Error! There was a problem writing the alarm string to logFile.txt.\n\r");
if(fclose(pFile))
debugMessage("Function: writeLogFile - Error! Could not close logFile.txt\n\r");
else
debugMessage("Function: writeLogFile - Notice. Closed logFile.txt\n\r");
return 1;
}
答案 0 :(得分:0)
您可以在关闭文件之前尝试添加fflush调用吗? 这应该强制实际写。如果您没有明确强制它,文件系统可能会缓存写入。