Uploaded image for project: 'Commons Compress'
  1. Commons Compress
  2. COMPRESS-48

[compress] add a memory efficient stream compress InputStream - e.g. a "DeflaterInputStream"

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • None
    • None
    • None
    • None
    • Operating System: All
      Platform: Other

    • 35028

    Description

      Assume from a struts-tomcate web-app I get a large file that I want to store in
      a DB. To save DB permanent storage, I want to compress this. To be portable, I
      rather want to do that in java than on the DB-side with some proprietary commands.

      In order not to have to load into the RAM at least the entire compressed output
      by e.g. creating a ByteArrayOutputStream with for example
      java.util.zip.GZIPOutputStream or java.util.zip.DeflaterOutputStream and then
      converting it back to an InputStream for the PreparedStatement
      stmt.setBinaryStream(int pos,
      InputStream stream, int length), I envision an InputStream converter that is
      memory efficient.

      I started implementing it myself and got it working at least for
      single-byte reads. But it is far from production-readiness - perhaps I should
      rather extend java.io.PipedInputStream than trying to do my own efficient
      buffer management and do all the synchronize() blocking etc.
      ==> shouldn't something go into org.apache.commons.compress.zip?

      There are certainly other applications for such a class.

      P.S.: Alternatively, there is a "OutputStream java.sql.Blob.setBinaryStream(long
      pos)" but for example in MySQL that "updatable BLOB that can update in-place" is
      not yet implemented. Doing proprietary SQL-"COMPRESS" as per
      http://dev.mysql.com/doc/mysql/en/string-functions.html is probably an even less
      preferrable option.

      Attachments

        Activity

          People

            tcurdt Torsten Curdt
            ralfhauser Ralf Hauser
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: