#include <windows.h>
#include <stdio.h>
#define MAXNUM 50
#define MAXSTR 50
#define CFGFILE "type.txt"
void FindTrash(char sDir[]);
void CheckFile(char name[]);
void OnErr(int e);
long g_lClrNum=0;
long g_lClrSize=0;
char sType[MAXNUM][MAXSTR];
void main()
{
char sPath[MAXSTR];
int i=0;
long lSizeMB,lSizeKB,lSizeB;
//加载配置文件
FILE *fp;
if((fp=fopen(CFGFILE,"r"))==NULL)
{
printf("打开配置文件:\"%s\"失败!",CFGFILE);
system("pause");
exit(0);
}
while(fscanf(fp,"%s",sType[i++])!=EOF&&i<MAXNUM);
fclose(fp);
puts("路径(直接ENTER则默认为当前路径):");
gets(sPath);
if(sPath[0]=='\0') strcpy(sPath,".");
FindTrash(sPath);
lSizeMB=g_lClrSize/(1<<20);
g_lClrSize%=(1<<20);
lSizeKB=g_lClrSize/(1<<10);
g_lClrSize%=(1<<10);
lSizeB=g_lClrSize;
puts("清理完毕!");
printf("清理文件总数目:%ld\n",g_lClrNum);
printf("清理文件总大小:%4ldMB%4ldKB%4ldB\n",lSizeMB,lSizeKB,lSizeB);
system("pause");
}
void FindTrash(char sDir[])
{
HANDLE hfile;
short hcon;
WIN32_FIND_DATA winfd;
char sPath[MAXSTR];
char sFileName[MAXSTR];
sprintf(sPath,"%s\\*.*",sDir);
hfile=FindFirstFile(sPath,&winfd);
hcon=(short)hfile;
while(hcon)
{
sprintf(sFileName,"%s\\%s",sDir,winfd.cFileName);
if(GetFileAttributes(sFileName)&FILE_ATTRIBUTE_DIRECTORY)//是不是文件夹?
{
if(!(winfd.cFileName[0]=='.'&&//确保不是本文件夹和上文件夹
(winfd.cFileName[1]=='\0'||winfd.cFileName[1]=='.'&&winfd.cFileName[2]=='\0')))
FindTrash(sFileName);
}
else
CheckFile(sFileName);
hcon=FindNextFile(hfile,&winfd);
}
if(!FindClose(hfile))
{
puts("关闭文件失败!");
system("pause");
exit(0);
}
}
void CheckFile(char name[])
{
HANDLE hf;
DWORD sizeLo;
char pathBuffer[MAXSTR];
int i;
for(i=0;sType[i][0];i++)
{
if(strstr(name,sType[i])!=NULL)
{
hf=CreateFile(name,GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0);
sizeLo = GetFileSize(hf, NULL);
GetFullPathName(name, MAXSTR,pathBuffer, NULL);
CloseHandle(hf);
if(DeleteFile(name))
{
printf("大小:%7dKB 文件名:\"%s\"\n",sizeLo/1024,name);
g_lClrNum++;
g_lClrSize+=sizeLo;
}
else
{
printf("清理文件:\"%s\"失败!\n",name);
}
}
}
}
垃圾文件清理助手
最新推荐文章于 2024-08-13 14:50:29 发布