分级创建目录及文件:
在根目录下按照日期分类生成目录,在日期目录下再按照分钟生成分钟目录,文件按每分钟生成在不同的文件夹下。
#include <io.h> //_access头文件
#include <direct.h> //_mkdir()目录头文件
void CFindFilesDlg:: TestLog()
{
SYSTEMTIME LocalSystemTime;
GetLocalTime(&LocalSystemTime);
CString strText;
strText.Format(_T("LOG_%02d%02d"), LocalSystemTime.wHour, LocalSystemTime.wMinute);
char folderName[512];//1.根目录
sprintf_s(folderName, "D:\\%s", "LOG");
//根目录文件夹不存在,先创建
if (_access(folderName, 0) == -1)
{
_mkdir(folderName);
}
char folderName2[512];//2.二级目录(日期)
sprintf_s(folderName2, "%s\\%02d-%02d", folderName, LocalSystemTime.wMonth, LocalSystemTime.wDay);
if (_access(folderName2, 0) == -1)
{
_mkdir(folderName2);
}
//生成TXT文件
char folderName3[512];//3.三级目录(分钟)
sprintf_s(folderName3, "%s\\%02d.%02d", folderName2, LocalSystemTime.wHour, LocalSystemTime.wMinute);
{
if (_access(folderName3, 0) == -1)
{
_mkdir(folderName3);
}
CString fileName; //4.文件名
fileName.Format("%s\\%02d.txt", folderName3, LocalSystemTime.wMinute);
if (CStdioFile *fsp = new CStdioFile(fileName, CFile::modeWrite | CFile::modeCreate | CFile::modeNoTruncate))
{
CString strContent = _T("这是一个测试数据。目录是在根目录下按照日期分类生成,在日期目录下再按照分钟生成分钟目录,文件按每分钟生成在不同的文件夹下\n");
fsp->SeekToEnd();
fsp->WriteString(strContent);
fsp->Close();
delete(fsp);
}
}
}
//获得工作目录路径
CString CFindFilesDlg::GetModulePath(bool bSlash)
{
CString strModulePath = _T("");
TCHAR sModuleFileName[MAX_PATH + 1] = { 0 };
DWORD dRet = GetModuleFileName(NULL, sModuleFileName, MAX_PATH);
strModulePath += sModuleFileName;
int nFindIndex = strModulePath.ReverseFind('\\');
if (nFindIndex)
{
if (bSlash)
{
strModulePath = strModulePath.Left(nFindIndex + 1);
}
else
{
strModulePath = strModulePath.Left(nFindIndex);
}
}
return strModulePath;
}
//测试按钮
void CFindFilesDlg::OnBtnClickedTest()
{
CString strWorkPath = GetModulePath(TRUE);//获得工作目录路径,在此次对TestLog()没用,仅作测试。
TestLog();
}