code: package edu.berkeley.nlp.util;
  
  import java.io.BufferedReader;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.OutputStream;
  import java.io.PrintWriter;
  import java.util.zip.GZIPInputStream;
  import java.util.zip.GZIPOutputStream;
  
  /**
   * Just like IOUtils, but reads and writes .gz files. File name extensions are
   * required!
   * 
   * THIS IS NOW OBSOLETE, THANK GOODNESS!
   * 
   * @author denero
   */
  public class GZIPUtils {
  	private GZIPUtils() {
  	} // No instantiation
  
  	// openIn
  	public static BufferedReader openIn(String path) throws IOException {
  		return openIn(new File(path));
  	}
  
  	public static BufferedReader openIn(File path) throws IOException {
  		return new BufferedReader(CharEncUtils.getReader(getInputStream(path)));
  	}
  
  	public static InputStream getInputStream(String path) throws IOException {
  		return getInputStream(new File(path));
  	}
  
  	public static InputStream getInputStream(File path) throws IOException {
  		InputStream instream;
  		if (path.getName().endsWith(".gz")) {
  			instream = new GZIPInputStream(new FileInputStream(path));
  		} else {
  			instream = new FileInputStream(path);
  		}
  		return instream;
  	}
  
  	public static BufferedReader openInEasy(String path) {
  		if (StrUtils.isEmpty(path))
  			return null;
  		return openInEasy(new File(path));
  	}
  
  	public static BufferedReader openInEasy(File path) {
  		if (path == null)
  			return null;
  		try {
  			return openIn(path);
  		} catch (Exception e) {
  			return null;
  		}
  	}
  
  	public static BufferedReader openInHard(String path) {
  		return openInHard(new File(path));
  	}
  
  	public static BufferedReader openInHard(File path) {
  		try {
  			return openIn(path);
  		} catch (Exception e) {
  			throw new RuntimeException(e);
  		}
  	}
  
  	// openOut
  	public static PrintWriter openOut(String path) throws IOException {
  		return openOut(new File(path));
  	}
  
  	public static PrintWriter openOut(File path) throws IOException {
  		OutputStream outstream;
  		if (path.getName().endsWith(".gz")) {
  			outstream = new GZIPOutputStream(new FileOutputStream(path));
  		} else {
  			outstream = new FileOutputStream(path);
  		}
  		return new PrintWriter(CharEncUtils.getWriter(outstream));
  	}
  
  	public static PrintWriter openOutEasy(String path) {
  		if (StrUtils.isEmpty(path))
  			return null;
  		return openOutEasy(new File(path));
  	}
  
  	public static PrintWriter openOutEasy(File path) {
  		if (path == null)
  			return null;
  		try {
  			return openOut(path);
  		} catch (Exception e) {
  			return null;
  		}
  	}
  
  	public static PrintWriter openOutHard(String path) {
  		return openOutHard(new File(path));
  	}
  
  	public static PrintWriter openOutHard(File path) {
  		try {
  			return openOut(path);
  		} catch (Exception e) {
  			throw new RuntimeException(e);
  		}
  	}
  
  }
  