File Input Output Java

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipException;
class ZipDemo {
  private static final int DEFAULT_BUFFER_SIZE = 4096;
  public static final byte[] compress(final String uncompressed) throws IOException {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    GZIPOutputStream zos = new GZIPOutputStream(baos);
    byte[] uncompressedBytes = uncompressed.getBytes();
    zos.write(uncompressedBytes, 0, uncompressedBytes.length);
    zos.close();
    return baos.toByteArray();
  }
  public static final String uncompress(final byte[] compressed) throws IOException {
    String uncompressed = "";
    try {
      ByteArrayInputStream bais = new ByteArrayInputStream(compressed);
      GZIPInputStream zis = new GZIPInputStream(bais);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      int numBytesRead = 0;
      byte[] tempBytes = new byte[DEFAULT_BUFFER_SIZE];
      while ((numBytesRead = zis.read(tempBytes, 0, tempBytes.length)) != -1) {
        baos.write(tempBytes, 0, numBytesRead);
      }
      uncompressed = new String(baos.toByteArray());
    } catch (ZipException e) {
      e.printStackTrace(System.err);
    }
    return uncompressed;
  }
  public static final String uncompress(final String compressed) throws IOException {
    return ZipDemo.uncompress(compressed.getBytes());
  }
  public static void main(String[] args) throws Exception{
      for (int i = 0; i < args.length; ++i) {
        String uncompressed = "";
        File f = new File(args[i]);
        if (f.exists()) {
          BufferedReader br = new BufferedReader(new FileReader(f));
          String line = "";
          StringBuffer buffer = new StringBuffer();
          while ((line = br.readLine()) != null)
            buffer.append(line);
          br.close();
          uncompressed = buffer.toString();
        } else {
          uncompressed = args[i];
        }
        byte[] compressed = ZipDemo.compress(uncompressed);
        String compressedAsString = new String(compressed);
        byte[] bytesFromCompressedAsString = compressedAsString.getBytes();
        bytesFromCompressedAsString.equals(compressed);
        System.out.println(ZipDemo.uncompress(compressed));
        System.out.println(ZipDemo.uncompress(compressedAsString));
     }
  }
}