Java:使用多个子目录提取zip文件
我有一个.zip(Meow.zip),它有多个文件和文件夹,就像这样Java:使用多个子目录提取zip文件,java,unzip,Java,Unzip,我有一个.zip(Meow.zip),它有多个文件和文件夹,就像这样 喵喵.zip File.txt Program.exe 文件夹 Resource.xml 另一个文件夹 其他东西 MoreResource.xml 我到处找了,但找不到任何有用的东西。 提前谢谢 你的朋友是你的朋友或同学。这里是一个从zip文件解压文件并重新创建目录树的类 import java.io.File; import java.io.FileOutputStream; import java.io.I
- File.txt
- Program.exe
- 文件夹
- Resource.xml
- 另一个文件夹
- 其他东西
- MoreResource.xml
- 其他东西
提前谢谢 你的朋友是你的朋友或同学。这里是一个从zip文件解压文件并重新创建目录树的类
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class ExtractZipContents {
public static void main(String[] args) {
try {
// Open the zip file
ZipFile zipFile = new ZipFile("Meow.zip");
Enumeration<?> enu = zipFile.entries();
while (enu.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry) enu.nextElement();
String name = zipEntry.getName();
long size = zipEntry.getSize();
long compressedSize = zipEntry.getCompressedSize();
System.out.printf("name: %-20s | size: %6d | compressed size: %6d\n",
name, size, compressedSize);
// Do we need to create a directory ?
File file = new File(name);
if (name.endsWith("/")) {
file.mkdirs();
continue;
}
File parent = file.getParentFile();
if (parent != null) {
parent.mkdirs();
}
// Extract the file
InputStream is = zipFile.getInputStream(zipEntry);
FileOutputStream fos = new FileOutputStream(file);
byte[] bytes = new byte[1024];
int length;
while ((length = is.read(bytes)) >= 0) {
fos.write(bytes, 0, length);
}
is.close();
fos.close();
}
zipFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
导入java.io.File;
导入java.io.FileOutputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.util.Enumeration;
导入java.util.zip.ZipEntry;
导入java.util.zip.ZipFile;
公共类ExtractZipContent{
公共静态void main(字符串[]args){
试一试{
//打开zip文件
ZipFile ZipFile=新ZipFile(“Meow.zip”);
枚举enu=zipFile.entries();
而(enu.hasMoreElements()){
ZipEntry ZipEntry=(ZipEntry)enu.nextElement();
String name=zipEntry.getName();
long size=zipEntry.getSize();
long compressedSize=zipEntry.getCompressedSize();
System.out.printf(“名称:%-20s |大小:%6d |压缩大小:%6d\n”,
名称、尺寸、压缩尺寸);
//我们需要创建一个目录吗?
文件文件=新文件(名称);
if(name.endsWith(“/”){
mkdirs()文件;
继续;
}
File parent=File.getParentFile();
如果(父项!=null){
parent.mkdirs();
}
//提取文件
InputStream is=zipFile.getInputStream(zipEntry);
FileOutputStream fos=新的FileOutputStream(文件);
字节[]字节=新字节[1024];
整数长度;
而((长度=is.read(字节))>=0){
fos.写入(字节,0,长度);
}
is.close();
fos.close();
}
zipFile.close();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
来源:您是否尝试过在谷歌上搜索“java解压缩zip文件”?第一个链接上有一个教程。@David这是Google上关于“java zip从子目录获取文件”的第一个链接。谢谢,这非常有效,我尝试了其他东西,但它只包含一个子文件夹,而不是多个子文件夹。关于zip提取/压缩的阅读很好@检查链接是否无效