package org.expressolivre.cte.common;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
/**
* @author L.F.Estivalet (Serpro)
*
* Created on May 9, 2011 at 2:43:28 PM
*
*/
public class IOUtil {
/**
* Open and write contents to a file.
*
* @param fileName
* the name of the file.
* @param contents
* contents to be written.
* @param append
* if true
contents will be appended to previous
* contents of the file. If false
a brand new file
* is created to write the contents.
* @throws IOException
* Thrown whenever a problem in the underlying file system
* happens.
*/
public static void writeFile(String fileName, String contents,
Boolean append) throws IOException {
BufferedWriter out = new BufferedWriter(
new FileWriter(fileName, append));
out.write(contents);
out.close();
}
/**
* Read the entire contents of the specified file and return a single String
* object containing the contents of the file.
*
* @param fileName
* the name of the file from which to read
*
* @return a String containing the contents of the input file
*
* @throws IOException
* if the specified file cannot be opened, or if an I/O error
* occurs while reading the file
*/
public static String readFully(String fileName) throws IOException {
return readFully(new File(fileName));
}
/**
* Read the entire contents of the specified file and return a single String
* object containing the contents of the file. This method does not return
* until the end of the input file is reached.
*
* @param file
* a File from which to read
*
* @return a String containing the contents of the input file
*
* @throws IOException
* if the specified file cannot be opened, or if an I/O error
* occurs while reading the file
*/
public static String readFully(File file) throws IOException {
return readFully(new FileReader(file));
}
/**
* Read the entire contents of the specified URL and return a single String
* object containing the contents of the URL. This method does not return
* until an end of stream is reached for the URL.
*
* @param url
* a URL from which to read
*
* @return a String containing the contents of the input URL
*
* @throws IOException
* if the specified URL cannot be opened, or if an I/O error
* occurs while reading the URL
*/
public static String readFully(URL url) throws IOException {
return readFully(url.openStream());
}
/**
* Read the entire contents of the specified InputStream and return a single
* String object containing the contents of the InputStream. This method
* does not return until the end of the input stream is reached.
*
* @param stream
* an InputStream from which to read
*
* @return a String containing the contents of the input stream
*
* @throws IOException
* if an I/O error occurs while reading the input stream
*/
public static String readFully(InputStream stream) throws IOException {
return readFully(new InputStreamReader(stream));
}
/**
* Read the entire contents of the specified Reader and return a single
* String object containing the contents of the InputStream. This method
* does not return until the end of the input file or stream is reached.
*
* @param reader
* a Reader from which to read
*
* @return a String containing the contents of the stream
*
* @throws IOException
* if an I/O error occurs while reading the input stream
*/
public static String readFully(Reader reader) throws IOException {
char[] arr = new char[8 * 1024]; // 8K at a time
StringBuffer buf = new StringBuffer();
int numChars;
while ((numChars = reader.read(arr, 0, arr.length)) > 0) {
buf.append(arr, 0, numChars);
}
return buf.toString();
}
/**
* Do not construct an instance of this class.
*/
private IOUtil() {
}
}