All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.avaje.freemarker.util.IOUtil Maven / Gradle / Ivy

The newest version!
package org.avaje.freemarker.util;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;

/**
 * IO utilities.
 */
public class IOUtil {

	private IOUtil() {
		/* no instances */
	}

	/**
	 * Reads the entire contents of the specified input stream and returns them
	 * as a byte array.
	 */
	public static byte[] read(InputStream in) throws IOException {
		ByteArrayOutputStream buffer = new ByteArrayOutputStream();
		pump(in, buffer);
		return buffer.toByteArray();
	}

	/**
	 * Reads the entire contents of the specified input stream and returns them
	 * as an ASCII string.
	 */
	public static String readAscii(InputStream in) throws IOException {
		return EncodeUtil.bytesToAscii(read(in));
	}
	
	public static String readUTF8(InputStream in) throws IOException {
    return EncodeUtil.bytesToUtf8(read(in));
  }

	/**
	 * Reads the entire contents of the specified input stream and returns them
	 * as UTF-8 string.
	 */
	public static String readUtf8(InputStream in) throws IOException {
		return EncodeUtil.bytesToUtf8(read(in));
	}

	/**
	 * Reads the entire contents of the specified input stream and returns them
	 * as a string using the encoding supplied.
	 */
	public static String readEncoded(InputStream in, String encoding) throws IOException {
		return EncodeUtil.decodeBytes(read(in), encoding);
	}

	public static String read(Reader reader) throws IOException {
		
		StringBuilder sb = new StringBuilder();
		try {
			char[] buffer = new char[4096];
			for (;;) {
				int len = reader.read(buffer);
				if (len < 0) {
					break;
				}
				sb.append(buffer, 0, len);
			}
		} finally {
			reader.close();
		}	
		
		return sb.toString();
	}
	
	/**
	 * Reads data from the specified input stream and copies it to the specified
	 * output stream, until the input stream is at EOF. Both streams are then
	 * closed.
	 * 
	 * @throws IOException
	 *             if the input or output stream is null
	 */
	public static void pump(InputStream in, OutputStream out) throws IOException {
		if (in == null) throw new IOException("Input stream is null");
		if (out == null) throw new IOException("Output stream is null");

		try {
			try {
				byte[] buffer = new byte[4096];
				for (;;) {
					int bytes = in.read(buffer);
					if (bytes < 0) {
						break;
					}
					out.write(buffer, 0, bytes);
				}
			} finally {
				in.close();
			}
		} finally {
			out.close();
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy