日期:2014-05-20  浏览次数:20927 次

怎样能解压带密码的Zip文件?
我用的Debian,Jdk好像不提供解压带密码的Zip文件,各位大虾,怎么办啊?

------解决方案--------------------
先在WINDOWS下右键解开
------解决方案--------------------
那你就把密码做成数据字典萨.
------解决方案--------------------
你首先要知道 zip在dos命令下是如何解压带密码的zip文件的 然后用ant.jar包里带的一个开源 压缩包 里面提供了和你输入这些参数的方法 dos下的解压命令 你可以到 windows下zip的帮助中找
------解决方案--------------------
用7Z软件可以搞定
------解决方案--------------------
学习一下。
------解决方案--------------------
程序里实现?
------解决方案--------------------
对于JAVA实现,貌似只能解压缩不带密码的ZIP文件,代码如下,
后面那个是调用系统命令实现的,对于带密码的ZIP文件也只能这样了~~JAVA没提供接口
package org.jfree;
import java.io.*;
import java.util.*;
import java.util.zip.*;
class Unzip {
public static void main(String[] args) {
String unzipfile = "D:/test.zip "; //解压缩的文件名
try {
File olddirec = new File(unzipfile); //解压缩的文件路径(为了获取路径)
ZipInputStream zin = new ZipInputStream(new FileInputStream(unzipfile));
ZipEntry entry;
//创建文件夹
while ( (entry = zin.getNextEntry()) != null){
if (entry.isDirectory()) {
File directory = new File(olddirec.getParent(), entry.getName());
if (!directory.exists())
if (!directory.mkdirs())
System.exit(0);
zin.closeEntry();
}
if (!entry.isDirectory()) {
File myFile = new File(entry.getName());
FileOutputStream fout = new FileOutputStream( "D:/ "+myFile.getPath());
DataOutputStream dout = new DataOutputStream(fout);
byte[] b = new byte[1024];
int len = 0;
while ( (len = zin.read(b)) != -1) {
dout.write(b, 0, len);
}
dout.close();
fout.close();
zin.closeEntry();
}
}
}
catch (IOException e) {
e.printStackTrace();
System.out.println(e);
}
}
}
调用系统命令解决密码问题
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();
}