1

外部ソースから受け取ったいくつかのファイルをアーカイブしたいと考えています。この各ファイルをByteArrayInputStreamとして受け取ります。最後に、後でダウンロードできるように、メソッドで zip アーカイブを作成し、byte[] 配列を返すようにします。私はこれを行うことができましたが、最終結果は ZipOutputStream であり、必要な byte[] 配列ではありません。どんなアイデアでも大歓迎です。ありがとう!

       FileOutputStream fos = null;
       ZipOutputStream zipOut = null;

       try {
           fos = new FileOutputStream(archiveFileName.concat(ReportFormat.ZIP.getFileExtension()));
           zipOut = new ZipOutputStream(new BufferedOutputStream(fos));

           for (Map.Entry<?, ByteArrayInputStream> entry : mapInputStream.entrySet()) {
               String  fileFromInsiteArchiveName = (String) entry.getKey();
               ByteArrayInputStream inputStream = entry.getValue();

               ZipEntry zipEntry = new ZipEntry(fileFromInsiteArchiveName);
               zipOut.putNextEntry(zipEntry);
               byte[] tmp = new byte[4 * 1024];
               int size = 0;
               while ((size = inputStream.read(tmp)) != -1) {
                   zipOut.write(tmp, 0, size);
               }
               zipOut.flush();
               inputStream.close();
           }
           zipOut.close();

           return zipOut;

       } catch (FileNotFoundException e) {
           //handle this
       } catch (IOException e) {
           //handle this
       } finally {
           try {
               if (fos != null) fos.close();
           } catch (Exception ex) {
               //handlethis
           }
       }
       return zipOut;
   }
4

1 に答える 1