Java怎么解压带密码的ZIP文件(急用,给高分) 大家好,用java.util.zip或Ant.jar类库中的zip类import org.apache.tools.zip.*,可以解压不带密码的zip压缩文件,现在需要解压带密码的zip文件(密码已知),以上两个包中没有带设置压缩文件密码的方法,不知道大家有谁做过解压带密码的zip文件,请高人指点,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个不是JAVA的问题,是算法的问题,而且,是保密级别的,我想基本弄不到,高价买都够呛 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),该怎么做?请高人指点,谢谢! 怎么写实现离开网站时后弹出广告窗口 这个阶段该不该学struct? log4j日志问题 急招JAVA程序员 如果在Servlet里写的Cookie没有设置setMaxAge()方法,那么Cookie的生存时间有多长? 各位高手请问:怎样使用复选框,删除选中的记录?急!!!! 那位高手给我指点一下 相除取整? servlet如何与数据库相连?求救,急!!! 各位大侠!小小弟想学习JSP,请问要有什么样的基础才行? 要用jsp作mysql数据库,用个什么编辑器好? JSP网页开发TOMCAT服务器中的问题
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),该怎么做?请高人指点,谢谢!