public static void pipeAndClose(InputStream istream, OutputStream ostream) throws IOException {
		if(ostream != null && istream != null) {
			try {
				/*
				 * This is the fastest method I know for reading from an
				 * indeterminate stream. So fast in fact, that it pars fairly
				 * well with FileChannel stuff in test cases.
				 * 
				 * Small and simple enough the JIT can grab hold and optimize
				 * it, but with a large enough buffer to not make reading slow.
				 */
				final BufferedInputStream input = new BufferedInputStream(istream);
				final BufferedOutputStream output = new BufferedOutputStream(ostream);
				final byte[] reader = new byte[IO_BUFFER_SIZE];
				int r = 0;
				while((r = input.read(reader, 0, IO_BUFFER_SIZE)) != -1) {
					output.write(reader, 0, r);
				}
				output.flush();
			} finally {
				istream.close();
				ostream.close();
			}
		}
	}