/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.Closeable;
import java.io.FileWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import org.apache.commons.io.IOUtils;
/**
*
* @author Brian Remedios
*/
public final class IOUtil {
private IOUtil() {
}
public static Writer createWriter() {
return new OutputStreamWriter(System.out);
}
public static Writer createWriter(String reportFile) {
try {
return StringUtil.isEmpty(reportFile) ? createWriter() : new BufferedWriter(new FileWriter(reportFile));
} catch (IOException e) {
throw new IllegalArgumentException(e);
}
}
public static Reader skipBOM(Reader source) {
Reader in = new BufferedReader(source);
try {
in.mark(1);
int firstCharacter = in.read();
if (firstCharacter != '\ufeff') {
in.reset();
}
} catch (IOException e) {
throw new RuntimeException("Error while trying to skip BOM marker", e);
}
return in;
}
public static void tryCloseClassLoader(ClassLoader classLoader) {
if (classLoader instanceof Closeable) {
IOUtils.closeQuietly((Closeable) classLoader);
}
}
}