VC++判断硬盘容量,依时间顺序自动删除文件

本文介绍了一个使用VC++实现的硬盘空间管理程序。该程序能够判断当前硬盘的使用情况,并在磁盘空间低于设定阈值时自动删除指定类型的文件以释放空间。文中详细展示了如何获取磁盘空间信息并进行文件清理的代码实现。
部署运行你感兴趣的模型镜像

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);
		}
		
	}


您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值