1

フォルダを圧縮したい。実はなんとかできましたが、問題があります。ディレクトリに空のフォルダがある場合、zipファイルに空のフォルダは作成されません。たとえば、ディレクトリは次のとおりです。

/フォルダ

/folder/temp.txt

/ folder / emptyfolder

このディレクトリをコードでzipすると、zipファイルにemptyfolderが存在しません。問題が見つかりました。問題はfiles.length==0であるため、forループが機能しません。しかし、解決策が見つかりませんでした。zipファイルに空のフォルダを作成するにはどうすればよいですか?

  private static final void zip(File directory, File base,
      ZipOutputStream zos) throws IOException {

    File[] files;
    if(directory.isDirectory()) // folder
    {

        files = directory.listFiles(); 

    }else
    {
        files = new File[1]; // file
        files[0] = directory;
    }


    byte[] buffer = new byte[8192];
    int read = 0;

    for (int i = 0, n = files.length; i < n; i++)
    {
      if (files[i].isDirectory())
      {
        zip(files[i], base, zos);
      }
      else
      {

              FileInputStream in = new FileInputStream(files[i]);
              ZipEntry entry = new ZipEntry(files[i].getPath().substring(
                      base.getPath().lastIndexOf("/") + 1));
              zos.putNextEntry(entry);
              while (-1 != (read = in.read(buffer)))
              {
                  zos.write(buffer, 0, read);
              }

              in.close();               

      }
    }
4

0 に答える 0