/**
* Copyright (C) 2005 - 2009 Eric Van Dewoestine
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.eclim.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
/**
* Utility methods for io.
*
* @author Eric Van Dewoestine
*/
public class IOUtils
{
private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
private IOUtils ()
{
}
/**
* Closes the supplied InputStream ignoring null and any exceptions.
*
* @param stream The InputStream to close.
*/
public static void closeQuietly(InputStream stream)
{
try{
if(stream != null){
stream.close();
}
}catch(Exception e){
// ignore
}
}
/**
* Closes the supplied OutputStream ignoring null and any exceptions.
*
* @param stream The OutputStream to close.
*/
public static void closeQuietly(OutputStream stream)
{
try{
if(stream != null){
stream.close();
}
}catch(Exception e){
// ignore
}
}
/**
* Closes the supplied Reader ignoring null and any exceptions.
*
* @param stream The Reader to close.
*/
public static void closeQuietly(Reader stream)
{
try{
if(stream != null){
stream.close();
}
}catch(Exception e){
// ignore
}
}
/**
* Closes the supplied Writer ignoring null and any exceptions.
*
* @param stream The Writer to close.
*/
public static void closeQuietly(Writer stream)
{
try{
if(stream != null){
stream.close();
}
}catch(Exception e){
// ignore
}
}
/**
* Copy the contents of the supplied InputStream to the specified OutputStream.
*
* @param in The InputStream.
* @param out The OutputStream.
*/
public static void copy(InputStream in, OutputStream out)
throws IOException
{
byte[] buffer = new byte[DEFAULT_BUFFER_SIZE];
int n = 0;
while (-1 != (n = in.read(buffer))) {
out.write(buffer, 0, n);
}
}
/**
* Copy the contents of the supplied Reader to the specified Writer.
*
* @param in The Reader.
* @param out The Writer.
*/
public static void copy(Reader in, Writer out)
throws IOException
{
char[] buffer = new char[DEFAULT_BUFFER_SIZE];
int n = 0;
while (-1 != (n = in.read(buffer))) {
out.write(buffer, 0, n);
}
}
/**
* Read the supplied input stream and return a list of lines read.
*
* @param in The input stream to read from.
* @return a list of lines read.
*/
public static List<String> readLines(InputStream in)
throws IOException
{
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
ArrayList<String> lines = new ArrayList<String>();
String line = null;
while((line = reader.readLine()) != null){
lines.add(line);
}
return lines;
}
/**
* Writes the supplied list of lines to the specified output stream.
*
* @param lines List of lines to write.
* @param out The output stream to write to.
*/
public static void writeLines(List<String> lines, OutputStream out)
throws IOException
{
PrintWriter writer = new PrintWriter(new OutputStreamWriter(out));
for (String line : lines){
writer.println(line);
}
writer.flush();
}
/**
* Reads the contents from the supplied InputStream and returns those contents
* as a String.
*
* @param in The InputStream to read.
* @return The InputStream contents.
*/
public static String toString(InputStream in)
throws IOException
{
return toString(new InputStreamReader(in));
}
/**
* Reads the contents from the supplied Reader and returns those contents
* as a String.
*
* @param in The Reader to read.
* @return The Reader contents.
*/
public static String toString(Reader in)
throws IOException
{
StringWriter out = new StringWriter();
copy(in, out);
return out.toString();
}
}