如何在另一个 zip 中创建 zip。我得到了 fileNotFoundException

Posted

技术标签:

【中文标题】如何在另一个 zip 中创建 zip。我得到了 fileNotFoundException【英文标题】:how to create zip inside the other zip.i got the fileNotFoundException 【发布时间】:2016-01-08 11:29:15 【问题描述】:

如何在 zip 文件中创建 zip enter image description here

得到以下错误:

D:\sagar\my work\Package Maker\DirectoryStruct>java zipStructure
java.io.FileNotFoundException: Additional_Sub_Folder\Additional_file.zip (The sy
stem cannot find the path specified)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:110)
        at zipStructure.main(zipStructure.java:22)

D:\sagar\my work\Package Maker\DirectoryStruct&gt; 即 Additional_sub_folder 和 Digital_sub_folder。在 Additional_sub_folder 1 中创建了 zip 文件(Additional_file.zip),在该 zip 2 文件夹中创建了 xml 文件夹和 pdf 文件夹

在 Digital_sub_folder 中创建 Artical_sub_folder,并在 Artical_sub_folder 中创建 3 个新文件夹,即 xml 文件夹、pdf 文件夹和 Graphics 文件夹。我尝试在java代码下面但不能正常工作,请帮助创建这个结构。

    import java.io.*;
        import java.io.File;
        import java.io.FileInputStream;
        import java.io.FileNotFoundException;
        import java.io.FileOutputStream;
        import java.io.IOException;
        import java.util.zip.*;
        import java.util.zip.ZipEntry;
        import java.util.zip.ZipOutputStream;

        public class zipStructure 

            public static void main(String[] args) 

                try 
                FileOutputStream fos = new FileOutputStream("main.zip");
                ZipOutputStream zos = new ZipOutputStream(fos);
                zos.putNextEntry(new ZipEntry("Additional_Sub_Folder/"));
                zos.putNextEntry(new ZipEntry("Digital_Sub_Folder/"));


                FileOutputStream fos1 = new FileOutputStream("Additional_Sub_Folder/Additional_file.zip");
                ZipOutputStream zos1 = new ZipOutputStream(fos1);
                /*zos1.putNextEntry(new ZipEntry("Additional_file.zip/xml/"));
                zos1.putNextEntry(new ZipEntry("Additional_file.zip/pdf/"));*/



                zos1.putNextEntry(new ZipEntry("Additional_file1.zip/xml/"));
                zos1.putNextEntry(new ZipEntry("Additional_file1.zip/pdf/"));

                    zos1.close();
                    fos1.close();

                    zos.close();
                    fos.close();
                 catch (FileNotFoundException e) 
                    e.printStackTrace();
                 catch (IOException e) 
                    e.printStackTrace();
                

            
            public static void addToZipFile(String fileName, ZipOutputStream zos) throws FileNotFoundException, IOException 

                System.out.println("Writing '" + fileName + "' to zip file");

                File file = new File(fileName);
                FileInputStream fis = new FileInputStream(file);
                ZipEntry zipEntry = new ZipEntry(fileName);
                zos.putNextEntry(zipEntry);

                byte[] bytes = new byte[1024];
                int length;
                while ((length = fis.read(bytes)) >= 0) 
                    zos.write(bytes, 0, length);
                

                zos.closeEntry();
                fis.close();
            
            


          [1]: http://i.stack.imgur.com/TNA8b.jpg

【问题讨论】:

【参考方案1】:

我没有遇到 zip-I/O 的问题,对于使用文件系统的每种类型的 I/O,我都有 FileNotFoundException。 对我有帮助的是,如果您使用 eclipse,则有“刷新项目”之类的功能或类似的功能。每次我遇到 I/O 问题时,它都有效。

【讨论】:

不适用于 eclipse,我在记事本上试了一下,并通过命令提示符运行 我现在唯一认识到的是,在 fos1 中你错过了路径中的 main.zip ......但我不确定那里是否需要它。 FileOutputStream fos1 = new FileOutputStream("MAIN1.zip???Additional_Sub_Folder/Additional_file.zip"); 你能检查提供图片吗,或者说我是你创建的那个结构我的朋友

以上是关于如何在另一个 zip 中创建 zip。我得到了 fileNotFoundException的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中创建一个zip文件

如何在 zip 文件归档器中创建文件夹 - node.js

无法在goofys挂载的文件夹中生成zip文件

如何在 Perl 中创建 Zip 存档?

如何在 Java 中创建未压缩的 Zip 存档

如何在 plsql (Oracle) 中创建 zip 文件夹