VC++判断硬盘容量,自动删除文件。代码片断记录
bool IsNeedDelete(CString strPath);//是否需要删除文件
bool FileDelete::IsNeedDelete(CString strPath)
{
DWORD dwTotalDiskSpace, dwFreeDiskSpace, dwUsedDiskSpace;
ULARGE_INTEGER uiFreeBytesAvailableToCaller;
ULARGE_INTEGER uiTotalNumberOfBytes;
ULARGE_INTEGER uiTotalNumberOfFreeBytes;
if (GetDiskFreeSpaceEx(strPath, &uiFreeBytesAvailableToCaller,
&uiTotalNumberOfBytes,
&uiTotalNumberOfFreeBytes))
{
dwTotalDiskSpace = (DWORD)(uiTotalNumberOfBytes.QuadPart / 1024 / 1024);
dwFreeDiskSpace = (DWORD)(uiFreeBytesAvailableToCaller.QuadPart >> 20);
dwUsedDiskSpace = dwTotalDiskSpace - dwFreeDiskSpace;
if (((dwUsedDiskSpace * 1.0) / dwTotalDiskSpace) > 0.8)//使用空间大于80%
{
return true;
}
else
{
return false;
}
TRACE("硬盘%s::总空间%dMB, 已用%dMB, 可用%dMB\n ", strPath,
dwTotalDiskSpace, dwUsedDiskSpace, dwFreeDiskSpace);
}
return false;
}
CString strPathName, strName, strExtName, strSavaPath;//所有文件,文件名(包含路径),扩展名,文件保存路径
int pos = szFilepath.ReverseFind('\\');
strSavaPath = szFilepath.Left(pos);
if(IsNeedDeleteFile(strSavaPath))
{
CFileFind finder;
strPathName = strSavaPath + _T("\\*.*");
BOOL ok = finder.FindFile(strPathName);
while (ok)
{
ok = finder.FindNextFile();
if (!finder.IsDirectory() && !finder.IsDots())
{
strName = finder.GetFilePath();
pos = strName.ReverseFind('.');
strExtName = strName.Right(strName.GetLength() - pos - 1);
if (strExtName == _T("jpg"))
{
// TRACE("\n");
// TRACE(strName);
DeleteFile(strName);
}
if (!IsNeedDeleteFile(szFilepath))//每次删除后判断容量
{
finder.Close();
break;
}
}
}
finder.Close();
}
// CTime time;
FILETIME time;
CString strName;
CString strPath = _T("F:\\test\\");//经测试CFileFind返回文件NTFS下是固定以文件名排序,FAT下以写入时间排序 可以直接操作文件名
FileDelete fd;
fd.IsNeedDelete(strPath);
CFileFind finder;
CString strPathName = strPath + _T("*.*");
bool bWork = finder.FindFile(strPathName);
while (bWork)
{
bWork = finder.FindNextFile();
if (!finder.IsDirectory() && !finder.IsDots())
{
strName = finder.GetFilePath();
finder.GetCreationTime(&time);
DeleteFile(strName);
}
}
本文介绍了一个使用VC++实现的硬盘空间管理程序。该程序能够判断当前硬盘的使用情况,并在磁盘空间低于设定阈值时自动删除指定类型的文件以释放空间。文中详细展示了如何获取磁盘空间信息并进行文件清理的代码实现。
1274

被折叠的 条评论
为什么被折叠?



