JAVA使用7-zip解压缩带密码的Zip文件(非Proccess方法)
2011-05-09 20:37
363 查看
首先到sourceforge网站下载sevenzipjbinding压缩包
我下载的版本是sevenzipjbinding-4.65-1.04-rc-extr-only-AllWindows.zip
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();
}
}
}
}s
我下载的版本是sevenzipjbinding-4.65-1.04-rc-extr-only-AllWindows.zip
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();
}
}
}
}s
相关文章推荐
- java 使用7-zip解压缩带密码的压缩文件(非Proccess方法)
- Python压缩解压缩zip文件及破解zip文件密码的方法
- Python压缩解压缩zip文件及破解zip文件密码的方法
- Python压缩解压缩zip文件及破解zip文件密码的方法
- [存底]使用C#压缩/解压缩7-zip文件 zip/Unzip file using 7-zip in C#
- JAVA实现压缩文件的方法(使用java.util.zip.*)
- 使用java.util.zip包压缩和解压缩文件
- PB8调用使用C++与C#分别编写生成解压缩带有密码的zip压缩文件的动态链接库dll(部分内容转自互联网)
- 详解java解压缩zip和rar的工具类使用教程
- 使用truezip解压缩zip文件
- 使用JAVA生成zip文件的方法:
- CompressFile工具类使用,zip和rar文件解压缩与打包操作Java源代码
- 三个利用Java实现zip压缩/解压缩方法
- JAVA,导出CSV,设最大行数限制,使用winzipaes压缩成带密码的zip文件
- 使用java自带的zip api压缩解压缩文本
- 非java.util.zip,使用ant.jar制作zip压缩文件,以及相关中文解决方法
- Java压缩文件工具类ZipUtil使用方法代码示例
- java压缩与解压缩(1)使用java.util.zip
- 使用java.util.zip包压缩和解压缩文件
- java压缩与解压缩(2)使用org.apache.tools.zip