导航:首页 > 文件处理 > 敲代码解压

敲代码解压

发布时间:2023-03-08 13:24:15

① 怎么用c语言将.zip文件解压文件夹

简单一点的 直接调用系统命令
比如system("unzip ___filename___ -d target_path");
这样做 实际就相当于在命令行下敲了这样的一个命令
不过 这个要求系统内 必须安装了unzip这个软件 即支持这个命令

复杂一些的 你可以再网上找一个开源的gzip 很多很好找的 然后看懂代码 调用对应的接口函数
这样做的好处不需要依赖系统环境

② 求高手帮忙 c++编写解压 压缩文件 代码!加密 解密 代码

//由于字数限制,下述代码有删节,如需完整代码,请直接访//问gdgzzch.blog.163.com
//霍夫曼树,又称哈夫曼数,huffman树

//-----------------------------------------------------------------------------
//huffmantreemain.cpp
//主界面
#include "huffmantree.h"
#include <fstream.h>
#include <conio.h>
#include "compress1.h"
#include "Ceshi.h"
void menu()
{
cout<<endl;
cout<<"\t\t *** 操作菜单 ***\n\n";
cout<<"\t\t\t 1 压缩文件\n";
cout<<"\t\t\t 2 解压文件\n";
cout<<"\t\t\t 3 测试\n";
cout<<"\t\t\t 0 退出\n\n\n\n";
return;
}

int main()
{
char meiyong;

cout<<"\n\n\n\n\n\n\n\n\n"
<<"\t &*************** 压缩软件 **************&\n"
<<"\t * *\n"
<<"\t * *\n"
<<"\t * *\n\n\n"
<<"\t * 运行本软件之前,请务必仔细阅读使用指南 *"
<<"\n\n\n\n\n\n\n\n\n\n";

cin.unsetf(ios::skipws);
cin>>meiyong;
cin.setf(ios::skipws);
ifstream fin("使用说明.txt",ios::binary);
fin.unsetf(ios::skipws);
while(fin>>meiyong)
{
cout<<meiyong;
}
cout<<endl;
getch();
fin.setf(ios::skipws);
fin.close();
cout<<"\n\n\n\n\n\n";

cout<<"\n";
cout<<"\t\t*-------------------------------------------*\n";
cout<<"\t\t * 实验六: 霍夫曼树的应用 * \n";
cout<<"\t ******* *******\n";
cout<<"\t\t * 作者: gdgzzch 学号: 15201314 *\n";
cout<<"\t\t*-------------------------------------------*\n\n";
cout<<"\t\t 2005.11.16\n\n";

menu();
int choice;
cout<<"请选择操作: ";
cin>>choice;
while(1)
{
switch(choice)
{
case 1:
Compress();
break;
case 2:
Decompress();
break;
case 3:
Ceshi();
break;
case 0:
cout<<"\n\n\t\t********* 谢谢您使用本软件,再见! ***********\n\n\n\n";
return 1;
default:
cout<<"无此操作!\n\n";
}
cout<<endl<<"请选择操作: ";
cin>>choice;
}
return 1;
}

//----------------------------------------------------------
//compress1.h
//压缩
#ifndef COMPRESS
#define COMPRESS

#include "huffmantree.h"
#include <fstream.h>
#include <iostream.h>
#include <conio.h>
#include <string.h>

//压缩函数
void Compress()
{
unsigned char ch;
int i,j,k;
int Charnum[256];//
unsigned char Chars[256]; //与下面共同使用 ,记录字符
int Charnums[256]; //记录对应字符的个数
int CharKinds; //字符种数
char filenameorg[21]; //文件名不超过20个字符 源文件名
char filenameaim[21]; //目标文件名
int fileorgsize; //源文件大小
int fileaimsize; //压缩文件大小

HuffmanTree<unsigned char> ht;
CharNameNode NameNode[256]; //存储字符对应的霍夫曼编码
BinTreeNode<unsigned char> *btn=NULL;
Code *first=NULL;
Code *last=NULL;

ifstream filein;
ofstream fileout;

cout<<"请输入你要压缩的文件的名字:";
cin>>filenameorg;
filein.open(filenameorg,ios::nocreate|ios::binary); //open:filenameorg
if(!filein)
{
cout<<filenameorg<<" 不存在!\n";
filein.clear();
return;
}
cout<<"请输入你的压缩文件的名字(*.HFM):"; //以后再用
cin>>filenameaim;
char filetype[5];
int len;
len=strlen(filenameaim);
if(len<=4)
{
cout<<filenameaim<<"文件的扩展名必须为HFM\n";
return ;
}
for(i=len-1,j=3;i>=len-4;i--,j--)
filetype[j]=filenameaim[i];
filetype[4]='\0';
if(strcmp(filetype,".HFM")!=0)
{
cout<<filenameaim<<"文件的扩展名必须为HFM\n";
return ;
}

// ******************************************************

for(i=0;i<256;i++)
{
Charnum[i]=0; //记录每一个字符的个数
Charnums[i]=0; //记录字符Char[i]的个数
}
filein.unsetf(ios::skipws);
fileorgsize=0; //计算源文件大小
while(filein>>ch)
{
Charnum[unsigned int(ch)]++; //统计每种字符的频数
fileorgsize++;
}
filein.setf(ios::skipws);
filein.close(); //close:filenameorg
// ******************************************************

j=0;
for(i=0;i<256;i++)
{
if(Charnum[i])
{
Chars[j]=unsigned char(i); //统计源文件中存在的字符的
Charnums[j]=Charnum[i];
j++;
}
}
CharKinds=j;
// ******************************************************

fileaimsize=0; //计算压缩文件大小
fileout.open(filenameaim,ios::binary);
fileout<<'0'<<' '; //非法位数(之后修改)
fileout<<filenameorg<<' ';
fileout<<CharKinds<<' '; //存入字符种类
fileaimsize+=7;
for(i=0;i<CharKinds;i++)
{
fileout<<Chars[i]<<' '<<Charnums[i]<<' ';//将字符信息存入临时文件
fileaimsize+=10;
}

ht.Build(Charnums,Chars,CharKinds,ht); //建立霍夫曼树
i=0;
ht.Path(ht.GetRoot(),first,last,NameNode,i); //搜索霍夫曼树求得字符对应的霍夫曼编码
// ***********************************************************

filein.open(filenameorg,ios::nocreate|ios::binary);
filein.unsetf(ios::skipws);
k=0;
j=0;
while(filein>>ch)
{
i=0;
while(ch!=NameNode[i].charname) //找到ch
i++;
Code *p=NameNode[i].link;
while(p!=NULL)
{
j<<=1;
j+=p->code;
k++;
if(k==8)
{
fileout<<unsigned char(j);
fileaimsize++; //计算压缩文件大小
k=0;
j=0;
}
p=p->link;
}
}
filein.setf(ios::skipws);
filein.close();
if(k<8)
{
j<<=(8-k);
fileout<<unsigned char(j);
fileaimsize++; //计算压缩文件大小
}
fileout.seekp(0,ios::beg);
fileout<<8-k; //修改非法代码的位数
fileout.close();
for(i=0;i<CharKinds;i++)
{
Code *q=NameNode[i].link;
Code *s=NULL;
while(q!=NULL)
{
s=q;
q=q->link;
delete s;
}
NameNode[i].link=NULL; //清除链表信息
}
ht.Destroy();
cout<<"文件压缩成功!压缩率为:"<<(fileaimsize*100)/fileorgsize<<'%'<<endl;

return;
}

void Decompress()
{
unsigned char ch;
int i,j,k;
unsigned char Chars[256]; //与下面共同使用 ,记录字符
int Charnums[256]; //记录对应字符的个数
int CharKinds; //字符种数
unsigned int total; //记录字符转化后的数
int fpend; //暂存文件指针的最后位置
char filenameorg[21]; //文件名不超过20个字符 源文件名
char filenameaim[21]; //目标文件名

HuffmanTree<unsigned char> ht;
CharNameNode NameNode[256]; //存储字符对应的霍夫曼编码
BinTreeNode<unsigned char> *btn=NULL;
Code *first=NULL;
Code *last=NULL;

ifstream filein;
ofstream fileout;

char filetype[5];
int len;
cout<<"请输入你要解压的文件的名字:";
cin>>filenameorg;

len=strlen(filenameorg);
if(len<=4)
{
cout<<filenameorg<<"不是霍夫曼编码的程序,不能解压!\n";
return ;
}
for(i=len-1,j=3;i>=len-4;i--,j--)
filetype[j]=filenameorg[i];
filetype[4]='\0';
if(strcmp(filetype,".HFM")!=0)
{
cout<<filenameorg<<"不是霍夫曼编码的程序,不能解压!\n";
return ;
}
filein.open(filenameorg,ios::nocreate|ios::binary);
if(!filein)
{
cout<<filenameorg<<" 不存在!\n";
filein.clear();
return;
}
filein.close();

/* cout<<"请输入你解压后的文件的名字:";
cin>>filenameaim;*/

filein.open(filenameorg,ios::nocreate|ios::binary);
if(!filein)
{
cout<<"解压失败,请重试!\n";
filein.clear();
return;
}
filein.seekg(0,ios::end);
fpend=filein.tellg(); //记录文件尾的位置
filein.seekg(0,ios::beg); //恢复
filein.unsetf(ios::skipws);
filein>>k>>ch; //最后一个字符不合法的位数
filein>>filenameaim>>ch;

filein>>CharKinds>>ch;
for(i=0;i<CharKinds;i++)
filein>>Chars[i]>>ch>>Charnums[i]>>ch; //载入字符信息

ht.Build(Charnums,Chars,CharKinds,ht); //建立霍夫曼树
btn=ht.GetRoot();
fileout.open(filenameaim,ios::binary); //以文本文件打开
if(!fileout)
{
cout<<"目标文件创建失败,请重试!\n";
fileout.clear();
return;
}
while(filein>>ch)
{
total=(unsigned int)(ch); //这里都是正确的
j=0;
if(filein.tellg()==fpend) //到了文件尾
j=k; //留k位不输出
for(i=7;i>=j;i--)
{
if(total&(1<<i)) //这一位是1向右子树走
btn=btn->GetRight();
else
btn=btn->GetLeft();
// if(btn->GetData()!=0)
if(btn->GetLeft()==NULL&&btn->GetRight()==NULL)
{
fileout<<btn->GetData();
btn=ht.GetRoot();
}
}
}
fileout.close();
filein.setf(ios::skipws);
filein.close();
ht.Destroy();
cout<<"解压成功!\n";
cout<<"保存在\""<<filenameaim<<"\"中."<<endl;

return;
}

#endif

③ 用python解压图片并打印代码

import zipfile

# 传入压缩文件zfile.zip获取相关信息

zip_file = zipfile.ZipFile('zfile.zip')

# 获取压缩文件中的内容

f_content = zip_file.namelist()

# 压缩前的大小

f_size = zip_file.getinfo('zfile/a.txt').file_size

# 压缩后的大小

c_size = zip_file.getinfo('zfile/a.txt').compress_size

ZipFile 对象有一个 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夹 的字符串的列表。这些字符串可以传递给 ZipFile 对象的 getinfo()方法,返回一个关 于特定文件的 ZipInfo 对象。ZipInfo 对象有自己的属性,诸如表示字节数的 file_size 和 compress_size,它们分别表示原来文件大小和压缩后文件大小。ZipFile 对象表示 整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。

从 ZIP 文件中解压缩

ZipFile 对象的 extractall()方法从 ZIP 文件中解压缩所有文件和文件夹,放到当 前工作目录中。

import zipfile

zip_file = zipfile.ZipFile('zfile.zip')

# 解压

zip_extract = zip_file.extractall()

zip_extract.close()

运行这段代码后, example.zip 的内容将被解压缩到 C:。 或者, 你可以向 extractall()传递的一个文件夹名称,它将文件解压缩到那个文件夹,而不是当前工作 目录。如果传递给 extractall()方法的文件夹不存在,它会被创建。例如,如果你用 exampleZip.extractall('C: delicious')取代处的调用,代码就会从 example.zip 中解压 缩文件,放到新创建的 C:delicious 文件夹中。

ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。

创建和添加到 ZIP 文件

要创建你自己的压缩 ZIP 文件,必须以“写模式”打开 ZipFile 对象,即传入'w' 作为第二个参数(这类似于向 open()函数传入'w',以写模式打开一个文本文件)。

如果向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指 的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添 加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压 缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩 算法,它对各种类型的数据都很有效)。

import zipfile

zip_file = zipfile.ZipFile('new.zip','w')

# 把zfile整个目录下所有内容,压缩为new.zip文件

zip_file.write('zfile',compress_type=zipfile.ZIP_DEFLATED)

# 把c.txt文件压缩成一个压缩文件

# zip_file.write('c.txt',compress_type=zipfile.ZIP_DEFLATED)

zip_file.close()

这段代码将创建一个新的 ZIP 文件,名为 new.zip,它包含 spam.txt 压缩后的内容。

要记住,就像写入文件一样,写模式将擦除 ZIP 文件中所有原有的内容。如果 只是希望将文件添加到原有的 ZIP 文件中,就要向 zipfile.ZipFile()传入'a'作为第二 个参数,以追加模式打开 ZIP 文件。

④ 如何用java代码调用解压工具去解压.exe文件

再 windows下通过 cmd命令执行解压缩没问题,但是通过 java代码去执行不能解压是为什么?我在开始运行中输入命令: cmd/ c rar. exe x- y d:\\ auto. rar d:\\----上面命令可以解压成功,但是通过下面 java代码不能实现解压缩功能,请指点。主要代码: java. lang. Runtime. getRuntime(). exec(" cmd/ c rar. exe x- y d:\\ auto. rar d:\\");
再 windows下通过 cmd命令执行解压缩没问题,但是通过 java代码去执行不能解压是为什么?我在开始运行中输入命令: cmd/ c rar. exe x- y d:\\ auto. rar d:\\----上面命令可以解压成功,但是通过下面 java代码不能实现解压缩功能,请指点。主要代码: java. lang. Runtime. getRuntime(). exec(" cmd/ c rar. exe x- y d:\\ auto. rar d:\\");

⑤ 易语言解压ZIP文件

添加一个ZIP压缩组件 在扩展组件里面,如果看不到扩展组件,就点 工具-支持库配置-全选-确定,就能看到了
然后写代码:
ZIP压缩1.解压(“C:\1.zip”,取特定目录(3))

⑥ BAT解压代码 用7Z

7z外命令可能在软件的安装路径,有的时候。先set
path=7z的文件安装路径;%path%7z命令解压文件的例子:解压File.7z文件到目录Mydir。7z
x
"d:\File.7z"
-y
-aos
-o"d:\Mydir"参数说明:x:完整路径下解压文件
-y:所有确认选项都默认为是(即不出现确认提示)-aos:跳过已存在的文件-o:设置输出目录

⑦ C#代码如何实现解压.Z文件啊

在C#中实现文件的压缩和解压缩,需要使用第三方的组建完成。常用的是:SharpZipLib组建。

1、压缩和解压缩有两种典型的算法,一种是BZIP2算法,另一种是GZIP算法。BZIP2能够获得较高的压缩比,但是压缩和解压缩比较耗时,GZIP效率比较高,但是压缩比较低。

2、BZIP2压缩算法的相关类,位于命名空间:ICSharpCode.SharpZipLib.BZip2中,算法要求指定输入流和输出流,并指定压缩方法使用的块大小,一般为2048.

3、GZIP压缩算法的相关类,位于命名空间:ICSharpCode.SharpZipLib.GZip中,首先创建GZipOutputStream类实例,作为压缩文件的输出流,使用GZipOutputStream类实例的Write方法,将从源文件读取的数据写入输入流。同时完成压缩运算。

4、使用实例:

classZipAndUnzipFile
{
(){

stringsrcFile=@".... estzip.txt";//准备压缩的文件路径
stringzipFile=@".... estzip";//压缩后的文件路径
stringunzipFile=@".... estzip_unzip.txt";//解压后的文件路径
Console.WriteLine("使用BZIP开始压缩文件……");
if(BZipFile(srcFile,zipFile+".bz"))//使用BZIP压缩文件
{
Console.WriteLine("文件压缩完成");
}
else
{
Console.WriteLine("文件压缩失败");
}
Console.WriteLine("使用BZIP开始解压文件……");
if(UnBzipFile(zipFile+".bz",unzipFile))//使用BZIP解压文件
{
Console.WriteLine("文件解压完成");
}
else
{
Console.WriteLine("文件解压失败");
}
Console.WriteLine("使用GZIP开始压缩文件……");
if(GZipFile(srcFile,zipFile+".gz"))//使用GZIP压缩文件
{
Console.WriteLine("文件压缩完成");
}
else
{
Console.WriteLine("文件压缩失败");
}
Console.WriteLine("使用GZIP开始解压文件……");
if(UnGzipFile(zipFile+".gz",unzipFile))//使用GZIP解压文件
{
Console.WriteLine("文件解压完成");
}
else
{
Console.WriteLine("文件解压失败");
}
Console.ReadLine();
}
//使用BZIP压缩文件的方法
staticboolBZipFile(stringsourcefilename,stringzipfilename)
{
boolblResult;//表示压缩是否成功的返回结果
//为源文件创建文件流实例,作为压缩方法的输入流参数
FileStreamsrcFile=File.OpenRead(sourcefilename);
//为压缩文件创建文件流实例,作为压缩方法的输出流参数
FileStreamzipFile=File.Open(zipfilename,FileMode.Create);
try
{
//以4096字节作为一个块的方式压缩文件
BZip2.Compress(srcFile,zipFile,4096);
blResult=true;
}
catch(Exceptionee)
{
Console.WriteLine(ee.Message);
blResult=false;
}
srcFile.Close();//关闭源文件流
zipFile.Close();//关闭压缩文件流
returnblResult;
}
//使用BZIP解压文件的方法
staticboolUnBzipFile(stringzipfilename,stringunzipfilename)
{
boolblResult;//表示解压是否成功的返回结果
//为压缩文件创建文件流实例,作为解压方法的输入流参数
FileStreamzipFile=File.OpenRead(zipfilename);
//为目标文件创建文件流实例,作为解压方法的输出流参数
FileStreamdestFile=File.Open(unzipfilename,FileMode.Create);
try
{
BZip2.Decompress(zipFile,destFile);//解压文件
blResult=true;
}
catch(Exceptionee)
{
Console.WriteLine(ee.Message);
blResult=false;
}
destFile.Close();//关闭目标文件流
zipFile.Close();//关闭压缩文件流
returnblResult;
}
//使用GZIP压缩文件的方法
staticboolGZipFile(stringsourcefilename,stringzipfilename)
{
boolblResult;//表示压缩是否成功的返回结果
//为源文件创建读取文件的流实例
FileStreamsrcFile=File.OpenRead(sourcefilename);
//为压缩文件创建写入文件的流实例,
GZipOutputStreamzipFile=newGZipOutputStream(File.Open(zipfilename,FileMode.Create));
try
{
byte[]FileData=newbyte[srcFile.Length];//创建缓冲数据
srcFile.Read(FileData,0,(int)srcFile.Length);//读取源文件
zipFile.Write(FileData,0,FileData.Length);//写入压缩文件
blResult=true;
}
catch(Exceptionee)
{
Console.WriteLine(ee.Message);
blResult=false;
}
srcFile.Close();//关闭源文件
zipFile.Close();//关闭压缩文件
returnblResult;
}
//使用GZIP解压文件的方法
staticboolUnGzipFile(stringzipfilename,stringunzipfilename)
{
boolblResult;//表示解压是否成功的返回结果
//创建压缩文件的输入流实例
GZipInputStreamzipFile=newGZipInputStream(File.OpenRead(zipfilename));
//创建目标文件的流
FileStreamdestFile=File.Open(unzipfilename,FileMode.Create);
try
{
intbuffersize=2048;//缓冲区的尺寸,一般是2048的倍数
byte[]FileData=newbyte[buffersize];//创建缓冲数据
while(buffersize>0)//一直读取到文件末尾
{
buffersize=zipFile.Read(FileData,0,buffersize);//读取压缩文件数据
destFile.Write(FileData,0,buffersize);//写入目标文件
}
blResult=true;
}
catch(Exceptionee)
{
Console.WriteLine(ee.Message);
blResult=false;
}
destFile.Close();//关闭目标文件
zipFile.Close();//关闭压缩文件
returnblResult;
}
}


转自:博客园《C#实现文件的压缩和解压缩》 --孙雅玲

⑧ 压缩后的JS代码怎样解压缩

一般压缩都经过混淆,如果你看到变量名都是A,B,C,D之类的无规则的命名,那就是被混淆过的,一般来说也很难阅读,就算你 还原了格式。

如果是没有混淆的,你可以试试用js的格式化工具来重新格式化一下的,比如:
/* 美化:格式化代码,使之容易阅读 */
/* 净化:去掉代码中多余的注释、换行、空格等 */
/* 压缩:将代码压缩为更小体积,便于传输 */
/* 解压:将压缩后的代码转换为人可以阅读的格式 */
/* 混淆:将代码的中变量名简短化以减小体积,但可读性差,经混淆后的代码无法还原 */

/* 如果有用,请别忘了推荐给你的朋友: */
/* javascript在线美化、净化、压缩、解压:http://tool.lu/js */

/* 以下是演示代码 */
var Inote = {};
Inote.JSTool = function(options) {
this.options = options || {};
};
Inote.JSTool.prototype = {
_name: 'Javascript工具',
_history: {
'v1.0': ['2011-01-18', 'javascript工具上线'],
'v1.1': ['2012-03-23', '增加混淆功能'],
'v1.2': ['2012-07-21', '升级美化功能引擎'],
'v1.3': ['2014-03-01', '升级解密功能,支持eval,window.eval,window["eval"]等的解密'],
'v1.4': ['2014-08-05', '升级混淆功能引擎'],
'v1.5': ['2014-08-09', '升级js压缩引擎'],
'v1.6': ['2015-04-11', '升级js混淆引擎']
},
options: {},
getName: function() {return this._name;},
getHistory: function() {
return this._history;}
};
var jstool = new Inote.JSTool();

阅读全文

与敲代码解压相关的资料

热点内容
服务器选用什么CPU比较好 浏览:332
明星怎么宣传安卓 浏览:953
8255芯片编程 浏览:65
java文件bat运行 浏览:747
java常见笔试 浏览:529
360程序员模式 浏览:363
AQS算法的查询树构造 浏览:329
小猪微信营销源码 浏览:12
阿里云服务器能连接打印机吗 浏览:175
命令行参考 浏览:281
怎么初步认识编程 浏览:208
为什么程序员都喜欢谷歌 浏览:891
压缩性骨拆能自愈吗 浏览:277
安卓怎么设置游戏画面 浏览:114
k线上写字源码 浏览:457
单击按钮保存资料源码 浏览:354
华为gt加密卡 浏览:213
河北超融合服务器厂家云主机 浏览:894
芙儿优安全座椅app怎么连接 浏览:294
专业美团骑手app怎么开通 浏览:949