文件夹Java的Zip内容

文件夹Java的Zip内容,java,zip,unzip,Java,Zip,Unzip,我正在尝试压缩文件夹的内容。也就是说,当我解压压缩文件时,我不想得到文件夹,只想得到文件夹的内容。内容是各种文件和子文件夹 问题:但是,当我这样做时,创建的zip不会显示我的文件,它只显示文件夹。当我使用不同的解压工具时,我可以看到文件就在那里。感觉好像应用了某种安全设置,或者它们被隐藏了。我需要能够看到的文件,因为它是造成问题与我的其他程序 结构应该是这样的 拉链 my.html my.css 其他文件夹 不是这样的 拉链 我的文件夹 my.html my.css 其他文件夹

我正在尝试压缩文件夹的内容。也就是说,当我解压压缩文件时,我不想得到文件夹,只想得到文件夹的内容。内容是各种文件和子文件夹

问题:但是,当我这样做时,创建的zip不会显示我的文件,它只显示文件夹。当我使用不同的解压工具时,我可以看到文件就在那里。感觉好像应用了某种安全设置,或者它们被隐藏了。我需要能够看到的文件,因为它是造成问题与我的其他程序

结构应该是这样的

  • 拉链
    • my.html
    • my.css
    • 其他文件夹
不是这样的

  • 拉链
    • 我的文件夹
      • my.html
      • my.css
      • 其他文件夹
这是我正在使用的代码

//create flat zip
  FileOutputStream fileWriter = new FileOutputStream(myfolder +".zip");
  ZipOutputStream zip = new ZipOutputStream(fileWriter);
  File folder = new File(myfolder);
   for (String fileName: folder.list()) {
        FileUtil.addFileToZip("", myfolder + "/" + fileName, zip);
    }
   zip.flush();
   zip.close();
 //end create zip
下面是我的FileUtil中的代码

  public static void addFileToZip(String path, String srcFile,ZipOutputStream zip) throws IOException {
        File folder = new File(srcFile);
        if (folder.isDirectory()) {
          addFolderToZip(path, srcFile, zip);
        }
        else {
          byte[] buf = new byte[1024];
          int len;
          FileInputStream in = new FileInputStream(srcFile);
          zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
          while ((len = in.read(buf)) > 0) {
            zip.write(buf, 0, len);
          }
          zip.closeEntry();
          zip.flush();
          in.close();
          //zip.close(); 
        }
   }

  public static void addFolderToZip(String path, String srcFolder, ZipOutputStream zip) throws IOException {
        File folder = new File(srcFolder);
        //System.out.println("Source folder is "+srcFolder+" into file "+folder);
        for (String fileName: folder.list()) {
          if (path.equals("")) {
            addFileToZip(folder.getName(), srcFolder + "/" + fileName, zip);
          }
          else {
          //System.out.println("zipping "+path + "/" + folder.getName()+" and file "+srcFolder + "/" + fileName);
            addFileToZip(path + "/" + folder.getName(), srcFolder + "/" + fileName,  zip);
          }
        }
      }

谢谢你的帮助,我觉得这只是一件小事,我可能会错过这里

addFileToZip
方法中,您有

zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
路径
为空时,您将得到一个附加有
文件夹的
“/”
。这可能是你的问题

试一试


addFileToZip
方法中,您有

zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
路径
为空时,您将得到一个附加有
文件夹的
“/”
。这可能是你的问题

试一试