Java怎么解压带密码的ZIP文件(急用,给高分)

chentao1983 2006-08-08 04:41:40
大家好,用java.util.zip或Ant.jar类库中的zip类import org.apache.tools.zip.*,可以解压不带密码的zip压缩文件,现在需要解压带密码的zip文件(密码已知),以上两个包中没有带设置压缩文件密码的方法,不知道大家有谁做过解压带密码的zip文件?

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.UnsupportedEncodingException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class UnZip
{
static final int BUFFER = 2048; //设置缓冲流
public void unZip(String path)
{
File fileComptation = new File(path);

int i =fileComptation.getAbsolutePath().lastIndexOf('.');
String dirname = new String();

if ( i != -1 )
dirname = fileComptation.getAbsolutePath().substring(0,i);
else
dirname = fileComptation.getAbsolutePath();

File newdir = new File(dirname);
newdir.mkdir();
try
{
FileInputStream fis = new FileInputStream(path); //获得输入流
ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
ZipEntry file = zis.getNextEntry();
byte[] c = new byte[1024];
int slen;
while (file != null)
{
i = make8859toGB(file.getName()).replace('/','\\').lastIndexOf('\\');
if ( i != -1 )
{
File dirs = new File(dirname+File.separator+make8859toGB(file.getName()).replace('/','\\').substring(0,i));
dirs.mkdirs();
dirs = null;
}

System.out.print("Extract "+make8859toGB(file.getName()).replace('/','\\')+" ........ ");
if (file.isDirectory())
{
File dirs = new File(make8859toGB(file.getName()).replace('/','\\'));
dirs.mkdir();
dirs = null;
}
else
{
FileOutputStream out = new FileOutputStream(dirname+File.separator+make8859toGB(file.getName()).replace('/','\\'));
while((slen = zis.read(c,0,c.length)) != -1)
out.write(c,0,slen);
out.close();
}
System.out.print("O.K.\n");
file = zis.getNextEntry();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}

public static void main(String[] args)
{
UnZip uz=new UnZip();
uz.unZip("c:\\eSeExcelFromJDBC.zip") ;//zip压缩文件路径
}

public static String make8859toGB(String str)
{
try
{
String str8859 = new String(str.getBytes("8859_1"),"GB2312");
return str8859;
}catch(UnsupportedEncodingException ioe)
{
return str;
}
}
}

以上是解压不带密码的zip压缩文件代码,如果zip文件有密码(密码固定,为123456),该怎么做?请高人指点,谢谢!
...全文
756 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
低调的小青蛙 2006-08-09
  • 打赏
  • 举报
回复
实在对不住, java.util.zip 不支持带密码的,你只能寻求第三方支持
TinyJimmy 2006-08-09
  • 打赏
  • 举报
回复
这个不好解决,如果压缩和解压过程你都能控制,不如加密数据文件好了
日总是我哥 2006-08-09
  • 打赏
  • 举报
回复
接分~

CSDN论坛浏览器:浏览、发帖、回复、结贴自动平均给分,下载地址:http://CoolSlob.ys168.com
hbwhwang 2006-08-09
  • 打赏
  • 举报
回复
如果是windows的系统,装个winrar。用它来解压,呵呵。

String pw="12345";
String cmd="C:\\Program Files\\WinRAR\\winrar X -p"+pw+" f:\\temp\\temp1.zip d:\\temp";
try{
Runtime.getRuntime().exec(cmd);
}catch(Exception ex){
ex.printStackTrace();
}
masse 2006-08-09
  • 打赏
  • 举报
回复
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgi?ubb=get_topic&f=38&t=002359


http://www.jguru.com/faq/view.jsp?EID=234256
masse 2006-08-09
  • 打赏
  • 举报
回复
Runtime.getRuntime().exec(winzip ....)

java的api是不支持带密码的解压和压缩的,
或者看看有没有别的开源代码做过类似的事情。

内容概要:本文围绕双三相永磁同步电机(PMSM)的转速-电流双闭环矢量控制系统,基于Matlab/Simulink平台开展仿真研究,详细构建了电机的数学模型,并设计了外环转速PI控制器与内环电流PI控制器,实现了对电机转速和电流的精确解耦控制。研究涵盖了坐标变换(Clark变换与Park变换)、空间矢量脉宽调制(SVPWM)技术、PI参数整定及系统稳定性分析等核心内容,通过仿真验证了该双闭环控制策略在动态响应、抗干扰能力及稳态精度方面的优良性能,为高性能电机驱动系统的设计与优化提供了有效的理论依据和技术参考。; 适合人群:从事电机控制、电力电子与电力传动领域的科研人员、研究生及具备一定Matlab/Simulink基础的工程技术人员。; 使用场景及目标:①深入理解永磁同步电机矢量控制的基本原理与实现方法;②掌握双闭环控制系统的建模、仿真与调试技巧;③学习SVPWM技术及PI控制器在电机控制中的应用与参数整定; 阅读建议:建议读者结合Matlab/Simulink软件,逐步实践文档中提到的建模与仿真步骤,重点关注坐标变换模块、PI控制器参数的调节以及SVPWM发生器的工作原理。通过修改仿真参数,观察系统在启动、加载和调速等不同工况下的动态响应,以加深对控制理论的理解。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧