我想加一个日志文件,并且是一天一个,之前的要一直保存,也就是每天的日志文件名称是不一样的,代码:
logfilename.Format("%d年%d月%d日.txt",curtime.GetYear(),curtime.GetMonth(),curtime.GetMinute());
CFile logfile(logfilename,CFile::modeCreate|CFile::modeReadWrite);
while(m_bRun)
{ curtime = CTime::GetCurrentTime();
if(/*curtime.GetHour() == 0 && curtime.GetMinute() == 0 && */curtime.GetSecond() == 0)
{
logfile.Close();
SetCurrentDirectory( "g:\\open\\log");
logfilename.Format("%d年%d月%d日.txt",curtime.GetYear(),curtime.GetMonth(),curtime.GetMinute());
CFile logfile(logfilename,CFile::modeCreate|CFile::modeReadWrite);
}
else
{
}
logfile.Write(logfilename,logfilename.GetLength());
logfile.Flush();
新建文件前要关闭昨天的文件,但是再重新建CFile对象logfile就会出错,可是每天建一个CFile对象的话循环怎么实现呢?原来的CFile对象能删除吗?或者是换个对象名,那样的话每天都不一样啊,循环该怎么设计呢??
logfilename.Format("%d年%d月%d日.txt",curtime.GetYear(),curtime.GetMonth(),curtime.GetMinute());
CFile logfile(logfilename,CFile::modeCreate|CFile::modeReadWrite);
while(m_bRun)
{ curtime = CTime::GetCurrentTime();
if(/*curtime.GetHour() == 0 && curtime.GetMinute() == 0 && */curtime.GetSecond() == 0)
{
logfile.Close();
SetCurrentDirectory( "g:\\open\\log");
logfilename.Format("%d年%d月%d日.txt",curtime.GetYear(),curtime.GetMonth(),curtime.GetMinute());
CFile logfile(logfilename,CFile::modeCreate|CFile::modeReadWrite);
}
else
{
}
logfile.Write(logfilename,logfilename.GetLength());
logfile.Flush();
新建文件前要关闭昨天的文件,但是再重新建CFile对象logfile就会出错,可是每天建一个CFile对象的话循环怎么实现呢?原来的CFile对象能删除吗?或者是换个对象名,那样的话每天都不一样啊,循环该怎么设计呢??
CFile logfile(logfilename,CFile::modeCreate|CFile::modeReadWrite); 定义了两遍?
CFile logfile(logfilename,CFile::modeCreate|CFile::modeReadWrite|CFile::modeNoTruncate);
logfile.SeekToEnd();
logfile.Write(...);
logfile.Close();
你这样用就行了,不需要非得循环,老实说,真有点看不懂你的代码
/C++
CFile file;
CTime time = CTime::GetCurrentTime();
CString strFile;
strFile.Format(_T("%04d年%02d月%02d日.txt"), time.GetYear(), time.GetMonth(), time.GetDay()/*这边应该用GetDay*/);// modeCreate:文件不存在直接创建文件,如果存在则打开文件并将原文件清空
// modeNoTruncate:与modeCreate组合使用,文件存在打开文件保留原文件数据
// 对于以上两个OpenFlags可以参照MSDN解释
// 这样同一天内,文件名是相同的,不会重复创建文件,数据也不会丢失。
// 当过了一天时,因为文件名不同了,这样就生成了一个新文件。
if (file.Open(strFile, CFile::modeCreate | CFile::modeReadWrite | CFile::modeNoTruncate))
{
file.SeekToEnd(); // 写之前,将文件指针移到文件尾部,不会对之前记录的log有影响
file.Write(str4Writing.GetBuffer(), str4Writing.GetLength());
file.Flush();
file.Close(); // 一次记录完,关闭文件,下次打开不会冲突
}
else
{
TRACE0("Failed to open file!\r\n");
return FALSE;
}