How to use GZip propperly?

I have been trying to make a program that zips a whole file at a time, I heard Gzip can do it, but the Java help thing does not show how to implement GZip
here is where I am so far am I going in the write direction?
Also is there a good Java book, with alot of example code in it?
import java.io.*;
import java.util.zip.*;
public class Compress {
public static void main(String[] args) throws IOException {
File dirf;
File filef;
File zipf;
Final BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
//next 3 code segments gets the directory, original file and zip file names
System.out.print("Enter in the directory of the file here:> ");
dirf = new File(reader.readLine());
String directory = dirf;
System.out.print("Enter in the name of the file to be zipped here:> ");
filef = new File(reader.readLine());
String files = filef;
System.out.print("Enter in the enter in the name of the zip file here:> ");
zipf = new File(reader.readLine());
String zip = zipf;
//creates the zip file in the same directory as the old file
File dir = new File(directory);
File zipper = new File(dir, zip);
zipper.createNewFile();
//primes for input of the zip file from old file
GZIPOutputStream zipfile = new ZipOutputStream(
new FileOutputStream(zipper));

Yup, pretty much. (You could always accept the filenames from the command line using the arg[] parameter on main).
     public void zipAFile(File source, File target) throws IOException, FileNotFoundException
          FileInputStream fis = new FileInputStream(source);
          FileOutputStream fos = new FileOutputStream(target);
          GZIPOutputStream gzos = new GZIPOutputStream(fos);
          byte[] buffer = new byte[2048];
          int read = fis.read(buffer);
          while (read == 2048)
               gzos.write(buffer);
               read = fis.read(buffer);
          gzos.write(buffer, 0, read);
          // The next step is VERY important.  If you do not flush the buffer
          // on the inner (gzip) stream, the outer (file) stream will get
          // closed before it gets the last buffer of data.
          gzos.close();
          fis.close();
          fos.close();
     }Cheers!

Similar Messages

  • How to use FlateDecode?

    Have a nice day to all!
    My name is Alexander, I am a programmer. I try to open PDF file useing Delphi 2009, but I can't do it becouse I can't decode Flate stream. I have read next documents:
    Document management — Portable document format — Part 1: PDF 1.7 (PDF 32000-1:2008)
    Issue on the Deflate compressed PDU format
    DEFLATE Compressed Data Format Specification version 1.3
    and same other, and tried to use it information.
    Also I try to use Zlib module in Delphi, but I get - "Data error".
    I want to decode this part of file
    H‰t”НЉ 1 …чэ х ]“¤’T 2 gP\ #.\ЛuьЃQРAaЮЮЇТЋ\ьбВMW'©:зФ©ѕxцйГчo·тдЙЕЛ« Ч’дттйх•l 7woO·пn®џ ;IЦЛЇ[ќEIч¦ҐИ0нMFR тнv{#_¶‹«ЧINч’EоO„П ?Ьo_y‘шeiЙµзJЋYµXkrъјЕЦзm ЪИєwµnІзЄ6:kУљ*kСдlз®#w9mq"Н¶Nш r·ЕSйхёлyЭй©GJ'E”9mп·Wзx<k‡’§М•t ‡ °›ZЖђЭІ6 в:&й›«; a0j 1G–*¦Ќ8i5—®УуїKZQ¶ј&#152; T8  ¦Щ$gM СИ9ҐT 5µµ,e"цЊ’0ќE,сє ’Ћf ¬uб2p uўЂЗЩ qbЩіNtЌL=ДУ>Й{Ае,ЭМYЂ ’ё  .О "°<  AыµЩs€ЯйУ|ЊAџ§GTљGФЖB?КB„¬@@/ ІйM2…!ґУ± ™ґД№В№‰ў©Gзµ"A ™ЙЏ@ЪаМБCШ‡їd®љ№ж ЖЉќй е`Ћ•qЌ=
    Ш(ФЋ .Њ  Vk‡еRnb‘ 
    †8 CЈp_ ?љ 3М  „` эраИ лД }ЉДЌ    2 FлБёR џM”Yмyvт `ь· dGwё Ґ FуОNe,ђ 0 ЫЗ?U(А Ќ Жg№хQ CхГlm© О к…¦С‚!\ґ 0КвAіJ2ђ ЌdѕFґ•( ‚™}
    $Јн„ЮB M fЄ ЦХ- : юЭ,а ‘9М1‡н|*   Б5г@ЌП Э?<йЎd¦ 3дM~XъА   ћў» pm™}·¦y„ жвґгцiЛУђЋb»Щr9е 6a°УьЬЋOЛм‘kиљ%ч…ўN; И« =ы QЗїHЧ' WПybdґLФ¤Їtњ·ё± сaїџCпУ&?   "Н О
    who can describe me - how i can do it?
    Sorry for my English
    Alexander

    Remember to remove the first two bytes from the data stream and *then* add the header bytes to the beginning of the data stream.  As well, you should try using gzip to decode the data stream.
    For example, if my pdf object looked like:
    123 0 obj\n<</Filter /FlateDecode /Length 7>>\nstream\nABCDEFG\nendstream\nendobj
    The data to be decoded would be ABCDEFG.  Do not include the "stream" or "endstream" keywords and make sure that any leading whitespace characters are removed (in the example above, the newline character after the keyword stream needs to be removed).  The data stream should be EXACTLY 7 bytes long as denoted by the Length parameter in the object.  Do not assume to know the length of an object based on the location of stream/endstream keywords as this will cause you trouble.  Always use the Length parameter.
    Once I have pulled the data stream from the object, I would have a byte array that contains 'ABCDEFG'.  I would then remove the first two bytes to get 'CDEFG'.  After that I would prepend the header bytes so that my array would look like (in ascii): 31, 139, 8, 0, 0, 0, 0, 0, 0, 1, 67, 68, 69, 70, 71
    This is the data stream that I would decode.  The above is an example only and cannot be decoded.
    Remember, you only need to remove the first two bytes of the data stream if your decoder is using RFC 1951.  If your decoder is using RFC 1950, then leave the first two bytes in.  Sometimes you can't tell which version of the RFC that the decoder is using so try both methods.
    Also, I wouldn't suggest trying to find raw source code to perform deflate decoding as the vast majority of the code out there is incomplete or simply doesn't work.  Use only decoders that are proven and reliable.  You could try writing your own decoder but only if you have an awful lot of time to spare.
    Hope this helps!

  • URLConnection.setConnectTimeout(): how to use?

    I wonder how to use URLConnection.setConnectTimeout()? I need to have a URLConnection object (in my case: HttpURLConnection). But the only way to do this for an URL is:
    HttpURLConnection con = (HttpURLConnection) url.openConnection(); right? But then it's too late to set a connection timeout. HttpURLConnection has only a protected constructor, so I can't use it. Is ther another way?

    I don't call connect():
                    con = (HttpURLConnection) url.openConnection(); //can take forever
                    con.setConnectTimeout(timeout);
                    con.setReadTimeout(timeout);
                    //avoid "java.io.IOException: HTTPS hostname wrong:  should be <217.5.135.142>"
                    if (con instanceof HttpsURLConnection) { //HTTPS URL?
                        ((HttpsURLConnection) con).setHostnameVerifier(new HostnameVerifier() {
                            public boolean verify(String hostname, SSLSession session) {
                                return true;
                    String contentEncoding = con.getContentEncoding();
                    is = con.getInputStream();
                    //get correct input stream for compressed data:
                    if (contentEncoding != null && contentEncoding.equalsIgnoreCase("gzip")) {
                        is = new GZIPInputStream(is); //reads 2 bytes to determin GZIP stream!
                    Utils.writeStream(is, outputStream);

  • Compress a signed message using gzip

    Hi,
    I need to compress the signed message which is an object using gzip compression and later on decompress it. How can I do this? Do I need to write the object to a file in order to compress it? Can I do this without writing to a file?
    Thanks

    http://forum.java.sun.com/thread.jsp?thread=324835&forum=31&message=1317133

  • How to use one email adress for multiple recipients

    Hello,
    I'd like to know how to use one email adress for multiple recipients. 
    this would be very useful or projects. for example;
    if i send one mail to [email protected], all people in this project get an email.
    I will add the people in this project myself. 
    I know it is possible, but I don't know how to do it ;-)
    please help me! 

    Hope this help.
    _http://technet.microsoft.com/en-us/library/cc164331(v=exchg.65) .aspx

  • Can't figure out how to use home sharing

    Since the latest couple iTunes updates, my family and I can not figure out how to use home sharing. Everyone in our household has their own iTunes, and for a long time we would just share our music through home sharing. But with the updates, so much has changed that we can no longer figure out how to use it.
    I have a lot of purchased albums on another laptop in the house, that im trying to move it all over to my own iTunes, and I have spent a long time searching the internet, and everything. And I just can't figure out how to do it. So.... how does it work now? I would really like to get these albums from my moms iTunes, onto mine. I would hate to have to buy them all over again.
    If anyone is able to help me out here, that would be great! Thanks!

    The problem im having is that after I am in another library through home sharing, I can't figure out how to select an album and import it to my library. They used to have it set up so that you just highlight all of the songs you want, and then all you had to do was click import. Now I don't even see an import button, or anything else like it. So im lost... I don't know if it's something im doing wrong, or if our home sharing system just isn't working properly.
    Thanks for the help.

  • How to use the same POWL query for multiple users

    Hello,
    I have defined a POWL query which executes properly. But if I map the same POWL query to 2 portal users and the 2 portal users try to access the same page simultaneously then it gives an error message to one of the users that
    "Query 'ABC' is already open in another session."
    where 'ABC' is the query name.
    Can you please tell me how to use the same POWL query for multiple users ?
    A fast reply would be highly appreciated.
    Thanks and Regards,
    Sandhya

    Batch processing usually involves using actions you have recorded.  In Action you can insert Path that can be used during processing documents.  Path have some size so you may want to only process document that have the same size.  Look in the Actions Palette fly-out menu for insert path.  It inserts|records the current document work path into the action being worked on and when the action is played it inserts the path into the document as the current work path..

  • How to use airport time capsule with multiple computers?

    I'm sure there are some thread about this but i couldn't find it... so sorry for that but hear me out! =)
    I bought the AirPort Time Capsule to back up my MBP
    And so i did.
    then i thought "let give this one a fresh start" so i erased all of it with the disk utility and re-installed the MBP from the recovery disk.
    I dont want all of the stuff i backed up just a few files and some pictures so i brought that back.. so far so good.
    Now i want to do a new back up of my MBP so i open time machine settings, pick the drive on the time capsule and then "Choose" i wait for the beck up to begin, and then it fails.  It says (sorry for my bad english, im swedish haha) "the mount /Volume/Data-1/StiflersMBP.sparsebundle is already in use for back up.
    this is what i want:
    i want the "StiflersMBP.sparsebundle" to just be so i can get some stuf when i need them. it's never to be erased.
    i want to make a new back up of my MBP as if it's a second computer...
    so guys and girls, what is the easiest and best solution?
    Best regards!

    TM does not work like that.
    If you want files to use later.. do not use TM.
    Or do not use TM to the same location. Plug a USB drive into the computer and use that as the target for the permanent backup.
    Read some details of how TM works so you understand what it will do.
    http://pondini.org/TM/Works.html
    Use a clone or different software for a permanent backup.
    http://pondini.org/TM/Clones.html
    How to use TC
    http://pondini.org/TM/Time_Capsule.html
    This is helpful.. particularly Q3.
    Why you don't want to use TM.
    Q20 here. http://pondini.org/TM/FAQ.html

  • How to use multiple ipods on one account

    I have an Ipod classic and just bought my sons two nano's how do I use these on the same account without changing my account info?

    Take a look here:
    How to use multiple iPods with one computer
    Forum Tip: Since you're new here, you've probably not discovered the Search feature available on every Discussions page, but next time, it might save you time (and everyone else from having to answer the same question multiple times) if you search a couple of ways for a topic, both in the relevant forums, in the User Tips Library and in the Apple Knowledge Base before you post a question.
    Regards.

  • How to use a Table View in AppleScriptObjC

    How can I use a table view and add data to it? And how can I display a button cell and image cell in the table? Thanks.

    Hi all,
    Actually i need some more clarification. How to use the same select statement, if i've to use the tabname in the where clause too?
    for ex : select * from (tab_name) where....?
    Can we do inner join on such select statements? If so how?
    Thanks & Regards,
    Mallik.

  • How to use '|' delimited as seprator in GUI_DOWNLOAD ? Plz suggest me ,,

    how to use '|' delimited as seprator in GUI_DOWNLOAD ? Plz suggest me ,,
    i want the output should be seprated by '|' delimited when i download the file.

    Hi,
    We will pass the seperator to the WRITE_FIELD_SEPARATOR parameter as
    CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
    filename = v_file
    write_field_separator = '|'
    TABLES
    data_tab = itab[] . "Our internal talbe filled with data
    Re: Why Function GUI_DOWNLOAD can create XML file but not a flat file?
    Award points if useful
    Thanks,
    Ravee...

  • ** How to use TO_DATE function in Stored Proc. for JDBC in ABAP-XSL mapping

    Hi friends,
    I use ABAP-XSL mapping to insert records in Oracle table. My Sender is File and receiver is JDBC. We use Oracle 10g database. All fields in table are VARCHAR2 except one field; this is having type 'DATE'.
    I use Stored procedure to update the records in table. I have converted my string into date using the Oracle TO_DATE function. But, when I use this format, it throws an error in the Receiver CC. (But, the message is processed successfully in SXMB_MONI).
    The input format I formed like below:
    <X_EMP_START_DT hasQuot="No" isInput="1" type="DATE">
    Value in Payload is like below.
    <X_EMP_START_DT hasQuot="No" isInput="1" type="DATE">TO_DATE('18-11-1991','DD-MM-YYYY')</X_EMP_START_DT>
    Error in CC comes as below:
    Error processing request in sax parser: Error when executing statement for table/stored proc. 'SP_EMP_DETAILS' (structure 'STATEMENT'): java.lang.NumberFormatException: For input string: "TO_DATE('18"
    Friends, I have tried, but unable to find the correct solution to insert.
    Kindly help me to solve this issue.
    Kind Regards,
    Jegathees P.
    (But, the same is working fine if we use direct method in ABAP-XSL ie. not thru Stored Procedure)

    Hi Sinha,
    Thanks for your reply.
    I used the syntax
    <xsl:call-template name="date:format-date">
       <xsl:with-param name="date-time" select="string" />
       <xsl:with-param name="pattern" select="string" />
    </xsl:call-template>
    in my Abap XSL.  But, its not working correctly. The problem is 'href' function to import "date.xsl" in my XSLT is not able to do that. The system throws an error. Moreover, it is not able to write the command 'extension-element-prefixes' in my <xsl:stylesheet namespace>
    May be I am not able to understand how to use this.
    Anyway, I solved this problem by handling date conversion inside Oracle Stored Procedure. Now, its working fine.
    Thank you.

  • Sender Mail Adapter - S/MIME - How to use it?

    Hi guys,
    I am trying to figure out how to use the S/MIME security parameter of the Sender Mail Adapter in PI 7.1.
    Could anyone point me to some useful documentation/examples/blogs ?
    Or perhaps explain what steps are involved when configuring this parameter?
    We are pulling emails from an Microsoft Exchange server.
    Many thanks,
    Aldo

    First of all one sender mail adapter has to be tight with a specific sender email address.
    The email has to be decrypted as whole, you cannot decrypt parts of it.
    Then you store certificates to secure store in J2EE server and point to it in send agreement, this should be equal to HTTPS setup
    Check security guide:
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/f7/c2953fc405330ee10000000a114084/frameset.htm

  • How to use Logical database in function module?

    I will create a function module in HR.
    but how to use Logical database  in function module ?  Logical database PNP always show screen.in function (RFC) code , it is a matter.

    You cannot attach the LDB to the main program of the function group.
    - So you may [SUBMIT|https://www.sdn.sap.com/irj/sdn/advancedsearch?cat=sdn_all&query=submit&adv=false&sortby=cm_rnd_rankvalue] a report which use the LDB and get back the data (export/import), by default in the syntax of SUBMIT the selection-screen will not be displayed
    - Use [LDB_PROCESS|https://www.sdn.sap.com/irj/sdn/advancedsearch?query=ldb_process&cat=sdn_all], fill a structured table for selection, and get data back in another table
    - Use [HR function modules to read Infotypes|https://www.sdn.sap.com/irj/sdn/advancedsearch?cat=sdn_all&query=hrfunctionmodulestoread+Infotypes&adv=false&sortby=cm_rnd_rankvalue].
    Regards

  • How-to use Excel for the XML file input?

    Hello all,
    Following our discussion with Gerhard Steinhuber on the very nice tutorial from Horst Schaude , "How to upload mass data via XML File Input" , I am starting this new discussion.
    In the comments section of this previous cited tutorial, Rufat Gadirov explains how to use a generated XML from Eclipse instead of your XSD file as your source in Excel.
    However, in spite of all the instructions, I am still facing the same issue in Excel when I try to save my file as XML : "The XML maps in this workbook are not exportable".
    What I try to do is to create one or more Sales Orders with multiple Items in it from a XML File Input, using excel to enter data.
    The part with the File input is working (if I directly upload my file to the webDAV, it creates a sales order instance with multiple items).
    The only missing part is the Excel data input that I cannot make work. Any help on this matter would be greatly appreciated.
    Here is my XML file that I try to use as a source in Excel before inputing data from Excel:
    <?xml version="1.0" encoding="UTF-8"?>
    <p:MySalesOrderUploadedIntegrationInputRequest xmlns:p="http://001365xxx-one-off.sap.com/YUUD0G3OY_" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <MessageHeader>
        <CreationDateTime>2015-03-02T12:00:00.000Z</CreationDateTime>
    </MessageHeader>
        <List actionCode="01" listCompleteTransmissionIndicator="true" reconciliationPeriodCounterValue="0">
            <MySalesOrderUploaded>
              <MySalesOrderUploadedID>idvalue0</MySalesOrderUploadedID>
              <MyBuyerID schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeID="token">token</MyBuyerID>
              <MyDateTime>2015-03-02T12:00:00.000Z</MyDateTime>
              <MyName languageCode="EN">MyName</MyName>
              <MyBillToParty schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeAgencySchemeID="token" schemeID="token">token</MyBillToParty>
              <MyDateToBeDelivered>2001-01-01</MyDateToBeDelivered>
              <MyEmployeeResponsible schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeAgencySchemeID="token" schemeID="token">token</MyEmployeeResponsible>
              <MySalesUnit schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeAgencySchemeID="token" schemeID="token">token</MySalesUnit>
                <MyItem>
                    <MyItemID>token</MyItemID>
                    <MyItemProductID schemeAgencyID="token" schemeID="token">token</MyItemProductID>
                    <MyItemDescription languageCode="EN">MyItemDescription</MyItemDescription>
                    <MyProductTypeCode>token</MyProductTypeCode>
                    <MyRequestedQuantity unitCode="token">0.0</MyRequestedQuantity>
                    <MyConfirmedQuantity unitCode="token">0.0</MyConfirmedQuantity>
                    <MyNetAmount currencyCode="token">0.0</MyNetAmount>
                </MyItem>
            </MySalesOrderUploaded>
            <MySalesOrderUploaded>
              <MySalesOrderUploadedID>idvalue0</MySalesOrderUploadedID>
              <MyBuyerID schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeID="token">token</MyBuyerID>
              <MyDateTime>2015-03-02T12:00:00.000Z</MyDateTime>
              <MyName languageCode="EN">MyName</MyName>
              <MyBillToParty schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeAgencySchemeID="token" schemeID="token">token</MyBillToParty>
              <MyDateToBeDelivered>2001-01-01</MyDateToBeDelivered>
              <MyEmployeeResponsible schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeAgencySchemeID="token" schemeID="token">token</MyEmployeeResponsible>
              <MySalesUnit schemeAgencyID="token" schemeAgencySchemeAgencyID="1" schemeAgencySchemeID="token" schemeID="token">token</MySalesUnit>
                <MyItem>
                    <MyItemID>token</MyItemID>
                    <MyItemProductID schemeAgencyID="token" schemeID="token">token</MyItemProductID>
                    <MyItemDescription languageCode="EN">MyItemDescription</MyItemDescription>
                    <MyProductTypeCode>token</MyProductTypeCode>
                    <MyRequestedQuantity unitCode="token">0.0</MyRequestedQuantity>
                    <MyConfirmedQuantity unitCode="token">0.0</MyConfirmedQuantity>
                    <MyNetAmount currencyCode="token">0.0</MyNetAmount>
                </MyItem>
            </MySalesOrderUploaded>
        </List>
    </p:MySalesOrderUploadedIntegrationInputRequest>
    Thank you all for your attention.
    Best regards.
    Jacques-Antoine Ollier

    Hello Jacques-Antoine,
    I suppose that as you have tried to construct a map from the schema, you have taken the elements from the List level down. In this case I also can't export the map.
    But if you take the elements from the level MySalesOrderUploaded down, you'll get the exportable map (screenshots)
    Best regards,
    Leonid Granatstein

Maybe you are looking for