⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 大文件管理
💻 CPP
字号:
#include "zlib.h"
#include <stdio.h>
#include <windows.h>
/*
int main()
{
unsigned char* szSouBuf,* szDesBuf;
unsigned long szDesLen, souLen;

  FILE* fps = fopen("d:\\vc\\新浪首页.htm","rb");
  if(fps == NULL)
		return 0;
		fseek(fps,0,SEEK_END);
		souLen = ftell(fps);
		fseek(fps,0,SEEK_SET);
		szSouBuf = new unsigned char[souLen+1];
		if(szSouBuf == NULL)
		{
		fclose(fps);
		return 0;
		}
		fread(szSouBuf,1,souLen,fps);
		fclose(fps);
		szSouBuf[souLen] = 0;
		szDesLen =  long(souLen * 1.001 + 12);
		szDesBuf = new unsigned char[szDesLen + 1];
		if(szDesBuf == NULL)
		{
		delete []szSouBuf;
		return 0;
		}
		unsigned long time = timeGetTime();
		if(compress2(szDesBuf,&szDesLen,szSouBuf,souLen,9))
		{
		delete []szSouBuf;
		delete []szDesBuf;
		return 0;
		}
		time = timeGetTime() - time;
		printf("共用时 %d 毫秒\n",time);
		FILE* fpd = fopen("d:\\vc\\新浪首页.zlb","wb");
		if(fpd == NULL)
		{
		delete []szSouBuf;
		delete []szDesBuf;
		return 0;
		}
		fwrite(szDesBuf,1,szDesLen,fpd);
		fclose(fpd);
		delete []szSouBuf;
		delete []szDesBuf;
		return 0;
}
*/
/*
int main()
{
	unsigned char* szSouBuf,* szDesBuf;
	unsigned long szDesLen, souLen;
	
	FILE* fps = fopen("d:\\vc\\新浪首页.zlb","rb");
	if(fps == NULL)
		return 0;
	fseek(fps,0,SEEK_END);
	souLen = ftell(fps);
	fseek(fps,0,SEEK_SET);
	szSouBuf = new unsigned char[souLen+1];
	if(szSouBuf == NULL)
	{
		fclose(fps);
		return 0;
	}
	fread(szSouBuf,1,souLen,fps);
	fclose(fps);
	szSouBuf[souLen] = 0;
	szDesLen =  long(souLen * 7);
	szDesBuf = new unsigned char[szDesLen];
	if(szDesBuf == NULL)
	{
		delete []szSouBuf;
		return 0;
	}
	unsigned long time = timeGetTime();
	if(uncompress(szDesBuf,&szDesLen,szSouBuf,souLen))
	{
		delete []szSouBuf;
		delete []szDesBuf;
		return 0;
	}
	time = timeGetTime() - time;
	printf("共用时 %d 毫秒\n",time);
	FILE* fpd = fopen("d:\\vc\\新浪首页1.htm","wb");
	if(fpd == NULL)
	{
		delete []szSouBuf;
		delete []szDesBuf;
		return 0;
	}
	fwrite(szDesBuf,1,szDesLen,fpd);
	fclose(fpd);
	delete []szSouBuf;
	delete []szDesBuf;
	return 0;
}
*/

int mycompress()
{
	unsigned char* szSouBuf = NULL,* szDesBuf = NULL;
	unsigned long szDesLen, souLen;
	FILE* fpIndex = fopen("f:\\data\\dnpage.idx","rb");
	if(fpIndex == NULL)
		return -1;
	FILE* fps = fopen("f:\\data\\dnpage.dat","rb");
	if(fps == NULL)
	{
		fclose(fpIndex);
		return -1;
	}
	FILE* fpd = fopen("f:\\data\\dnpage.zlb","wb");
	if(fpd == NULL)
	{
		fclose(fpIndex);
		fclose(fps);
		return -1;
	}
	long i = 0;
	long lTotalNum = 0;
	long lBaseNum[2];
	char cFlag = 1;

	fread(&lBaseNum[0],sizeof(long),1,fpIndex);
	unsigned long time ;
	unsigned long tm1 = 0;
	while(!feof(fpIndex) && i < 5000)
	{
		fread(&souLen,sizeof(long),1,fpIndex);
		lBaseNum[1] = souLen;
		souLen -= lBaseNum[0];
		lBaseNum[0] = lBaseNum[1];
		lTotalNum += souLen;
		szSouBuf = new unsigned char[souLen];
		if(szSouBuf == NULL)
		{
			cFlag = 0;
			break;
		}
		souLen = fread(szSouBuf,1,souLen,fps);
		szDesLen =  long(souLen * 1.001 + 12);
		szDesBuf = new unsigned char[szDesLen + 1];
		if(szDesBuf == NULL)
		{
			cFlag = 0;
			break;
		}
		time = timeGetTime();
		if(compress2(szDesBuf,&szDesLen,szSouBuf,souLen,1))
		{
			printf("压缩错误!\n");
			cFlag = 0;
			break;
		}
		time = timeGetTime() - time;
		tm1 += time;
		fwrite(&szDesLen,sizeof(long),1,fpd);
		fwrite(szDesBuf,1,szDesLen,fpd);
		i++;
		printf("i = %d\n",i);
		delete []szSouBuf;
		szSouBuf = NULL;
		delete []szDesBuf;
		szDesBuf = NULL;
	}
	printf("共用时%d毫秒.\n",tm1);
	printf("原文件字节数为 %d。\n",lTotalNum);
	fclose(fps);
	fclose(fpd);
	fclose(fpIndex);
	delete []szSouBuf;
	delete []szDesBuf;
	if(cFlag)
		return 0;
	return 1;
}

int myuncompress()
{
	unsigned char* szSouBuf = NULL,* szDesBuf = NULL;
	unsigned long szDesLen, souLen;
	
	FILE* fps = fopen("f:\\data\\dnpage.zlb","rb");
	if(fps == NULL)
		return 0;
	FILE* fpd = fopen("f:\\data\\dnpage1.dat","wb");
	if(fpd == NULL)
	{
		fclose(fps);
		return 0;
	}
	long i = 0;
	char cFlag = 1;
	unsigned long time;
	unsigned long tm = 0;
	while(!feof(fps) && i<5000)
	{
		fread(&souLen,4,1,fps);
		i++;
		printf("i = %d\n",i);
		szSouBuf = new unsigned char[souLen+1];
		if(szSouBuf == NULL)
		{
			cFlag = 0;
			break;
		}
		fread(szSouBuf,1,souLen,fps);
		szSouBuf[souLen] = 0;
		szDesLen = 9*souLen;
		szDesBuf = new unsigned char[szDesLen];
		if(szDesBuf == NULL)
		{
			cFlag = 0;
			break;
		}
		time = timeGetTime();
		if(uncompress(szDesBuf,&szDesLen,szSouBuf,souLen))
		{
			printf("解压缩错误!\n");
			cFlag = 0;
			break;
		}
		time = timeGetTime() - time;
		tm += time;
		fwrite(szDesBuf,1,szDesLen,fpd);
		delete []szSouBuf;
		szSouBuf = NULL;
		delete []szDesBuf;
		szDesBuf = NULL;
	}
	printf("共用时%d毫秒\n",tm);
	fclose(fps);
	fclose(fpd);
	if(cFlag)
		return 0;
	return -1;
}

int main()
{
	long j = 0;
	while(1)
	{
		j++;
		if(j%2)
		{
			if(mycompress())
			{
				printf("压缩错误!\n");
			}
		}
		/*
		else
		{
			if(myuncompress())
			{
				printf("解压缩错误!\n");
			}
		}
		*/
		if(j == 2)
			break;
	}
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -