Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:使用多个子目录提取zip文件_Java_Unzip - Fatal编程技术网

Java:使用多个子目录提取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

我有一个.zip(Meow.zip),它有多个文件和文件夹,就像这样

  • 喵喵.zip
    • 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提取/压缩的阅读很好@检查链接是否无效