java解密zip文件(亲测可用)
来源:互联网 发布:linux如何安装wine 编辑:程序博客网 时间:2024/05/10 20:02
之前我们写过java如何实现zip文件的解压,而有时,当我们的zip文件进行了加密(在我们知道秘钥的情况下),又想在查看的时候使用,故而需要使用解密
代码是从网上找的,没有做任何修改,测试了一下,不管是否安装压缩软件,密码是否含有中文,(windows下)都可以使用,需要的可以看一下,jar包可以在我的资源上下载一下,免费的,也是我从其他人那里花积分换的
public void unzipDirWithPassword( final String sourceZipFile , final String destinationDir , final String password ){ RandomAccessFile randomAccessFile = null; ISevenZipInArchive inArchive = null; try{ randomAccessFile = new RandomAccessFile(sourceZipFile, "r"); inArchive = SevenZip.openInArchive(null, // autodetect archive type new RandomAccessFileInStream(randomAccessFile)); // Getting simple interface of the archive inArchive ISimpleInArchive simpleInArchive = inArchive.getSimpleInterface(); for (final ISimpleInArchiveItem item : simpleInArchive.getArchiveItems()){ final int[] hash = new int[] { 0 }; if (!item.isFolder()){ ExtractOperationResult result; result = item.extractSlow(new ISequentialOutStream(){ public int write(final byte[] data) throws SevenZipException{ try{ if(item.getPath().indexOf(File.separator)>0){ String path = destinationDir+File.separator+item.getPath(). substring(0,item.getPath().lastIndexOf(File.separator)); File folderExisting = new File(path); if (!folderExisting.exists()) new File(path).mkdirs(); } if(!new File(destinationDir + File.separator+item.getPath()).exists()){ new File(destinationDir).createNewFile(); } OutputStream out = new FileOutputStream(destinationDir+ File.separator+item.getPath()); out.write(data); out.close(); }catch( Exception e ){ e.printStackTrace(); } hash[0] |= Arrays.hashCode(data); return data.length; // Return amount of proceed data } },password); /// password. if (result == ExtractOperationResult.OK){ System.out.println(String.format("%9X | %s", hash[0], item.getPath())); }else{ System.err.println("Error extracting item: " + result); } } } } catch (Exception e){ e.printStackTrace(); } finally { if (inArchive != null){ try { inArchive.close(); } catch (SevenZipException e){ System.err.println("Error closing archive: " + e); e.printStackTrace(); } } if (randomAccessFile != null) { try{ randomAccessFile.close(); } catch (IOException e){ System.err.println("Error closing file: " + e); e.printStackTrace(); } } }}
0 0
- java解密zip文件(亲测可用)
- Java 加密解密zip文件(亲测有效,附源码和jar包)
- Java 加密解密zip文件
- 使用lua代码创建文件夹,解压zip文件到指定目录(亲测可用)
- ZIP文件解压(java)
- java解压带密码的zip文件,支持多种解密算法
- zip解密
- Java Api解压缩Zip文件(一)
- java远程下载文件(zip)
- java 实现解压缩文件(ZIP/rar)
- java解压zip、rar(多级文件)
- java 解压缩zip文件
- Java读写Zip文件
- Java处理Zip文件
- Java压缩zip文件
- java 解压缩zip文件
- Java解压zip文件
- java解压缩zip文件
- object-c常见的知识点-1
- Unable to execute dex: Multiple dex files define
- Spring配置事务管理,service端通过@Transactional注解
- js中延迟函数的使用
- JS和Native交互之 -WebViewJavascriptBridge源码分析
- java解密zip文件(亲测可用)
- 《how to write and publis a scientific paper》 Chapter 3
- VTK从TXT文件中读取数据
- 2015级C++第2周实践项目
- 2015年各城市平均月薪,你拉后腿了么?
- hihocoder: hiho一下 第八十八周 88
- 正则表达式之PHP篇split 与 php函数explode
- merge理解
- Leetcode ☞ 147. Insertion Sort List ☆