背景介绍
使用google的glog日志库管理日志,因为glog自身没有清理日志的功能,只能设置日志占用磁盘空间的上限。现在需要在每次执行时都清理LOG文件夹内的所有日志,根据网上代码整理出满足当前需求的方式。基本思路是遍历获取文件夹内的所有文件名,存储在vector中,然后用c++ remove函数逐个删除。其中,遇到一个崩溃问题,主要是因为文件句柄的类型名称在windows10中要用intptr_t。
c++实现
#include <iostream>
#include <io.h>
#include <Windows.h>
#include <vector>
#include <string>
using namespace std;
void getCurrentFile(string path, vector<string>& files)
{
intptr_t hFile = 0;
struct _finddata_t fileinfo;
string p;
string q = p.assign(path).append("\\*");
hFile = _findfirst(q.c_str(), &fileinfo);
if (hFile != -1)
{
do{
if (fileinfo.attrib & _A_SUBDIR)
{
}
else
{
files.push_back(fileinfo.name);
}
} while (_findnext(hFile, &fileinfo) == 0);
_findclose(hFile);
}
}
void main()
{
string str = "mylog";
vector<string> files;
getCurrentFile(str, files);
int size = files.size();
for (int i = 0; i<size; i++)
{
cout << files[i] << endl;
remove((str.append("\\") + files[i]).c_str());
}
}
|