【发布时间】:2020-07-08 11:27:28
【问题描述】:
我的 GUI 在一台机器上运行,如果发生错误,该机器应该按其按钮(而不是通过 Windows 屏幕)关闭。 GUI 使用 CStdioFile 对象将错误日志写入文件,然后弹出一个错误窗口,通知用户关闭机器。 似乎在某些情况下,windows 正在删除这个文件,或者文件在那里但它是空的。看起来文件已写入 RAM 而不是硬盘,因为我“粗暴地”将其关闭。 我试图添加: int fileLength = myFile.GetLength(); 并看到 fileLength 得到正确的长度,但即使这样文件也被删除/为空。 尝试添加 myFile.Flush();强制系统将文件写入硬盘。还是不行。
我可以做些什么来解决这个问题?
void WriteToErrorLog(CString str, CString traceID)
{
CFileException fileEx;
CFile fileParam;
CString strFilePath = _T("C:/Errors/errors.log");
CStdioFile myFile;
if (myFile.Open(strFilePath, CFile::modeCreate | CFile::modeNoTruncate | CFile::modeWrite))
{
myFile.SeekToEnd();
myFile.WriteString(str);
myFile.Flush();
myFile.Close();
if (myFile.Open(strFilePath, CFile::modeRead))
{
int fileLength=myFile.GetLength();
myFile.Close();
}
}
【问题讨论】: