2

ファイルを取得して圧縮し、データベースに保存するコードがあります

このように見えます

          // STEP 1 - Create a ZIP file
          byte[] buffer = new byte[1024];// 18024
          ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream("file.zip"));
          outZip.setLevel(Deflater.DEFAULT_COMPRESSION);
          FileInputStream in = new FileInputStream(c:\file.hex);
          outZip.putNextEntry(new ZipEntry("file.hex"));
          int len;
          while (( len = in.read(buffer)) > 0)
                outZip.write(buffer, 0, len);
          outZip.closeEntry();
          in.close();
          outZip.close();

          // STEP 2 - Insert zip file to DB
          file = new File("file.zip");
          FileInputStream fis = new FileInputStream( file );

DBに保存するfisオブジェクト

しかし、ファイルシステムを完全に避け、file.zipを作成したくありません。ZipOutputStream を FileInputStream に直接変換する必要があると思いますが、それを行う方法が見つかりませんでした。

これを達成する簡単な方法はありますか?

  • ファイルを抽出するときにも同じ問題があります。それを読み取るには、file.zipとfile.hexの2つの異なる一時ファイルを作成する必要があります
4

1 に答える 1

9

まったく作成する必要はありませんFileOutputStreamByteArrayOutputStream代わりに使用してください:

ByteArrayOutputStream zipBytes = new ByteArrayOutputStream()
ZipOutputStream outZip = new ZipOutputStream(zipBytes);

// run your code that adds zip entries....

zipBytes.getBytes() // returns array of bytes that contain your zipped information.
于 2013-05-09T13:25:08.117 に答える