package at.gv.egovernment.moa.util; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; /** * Utility for accessing files on the file system, and for reading from input streams. * @author Paul Ivancsics * @version $Id$ */ public class FileUtils { /** * Reads a file, given by URL, into a byte array. * @param urlString file URL * @return file content * @throws IOException on any exception thrown */ public static byte[] readURL(String urlString) throws IOException { URL url = new URL(urlString); InputStream in = new BufferedInputStream(url.openStream()); byte[] content = StreamUtils.readStream(in); in.close(); return content; } /** * Reads a file, given by URL, into a String. * @param urlString file URL * @param encoding character encoding * @return file content * @throws IOException on any exception thrown */ public static String readURL(String urlString, String encoding) throws IOException { byte[] content = readURL(urlString); return new String(content, encoding); } /** * Reads a file, given by filename, into a byte array. * @param filename filename * @return file content * @throws IOException on any exception thrown */ public static byte[] readFile(String filename) throws IOException { BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename)); byte[] content = StreamUtils.readStream(in); in.close(); return content; } /** * Reads a file, given by filename, into a String. * @param filename filename * @param encoding character encoding * @return file content * @throws IOException on any exception thrown */ public static String readFile(String filename, String encoding) throws IOException { byte[] content = readFile(filename); return new String(content, encoding); } /** * Reads a file from a resource. * @param name resource name * @return file content as a byte array * @throws IOException on any exception thrown */ public static byte[] readResource(String name) throws IOException { ClassLoader cl = FileUtils.class.getClassLoader(); BufferedInputStream in = new BufferedInputStream(cl.getResourceAsStream(name)); byte[] content = StreamUtils.readStream(in); in.close(); return content; } /** * Reads a file from a resource. * @param name filename * @param encoding character encoding * @return file content * @throws IOException on any exception thrown */ public static String readResource(String name, String encoding) throws IOException { byte[] content = readResource(name); return new String(content, encoding); } /** * Returns the absolute URL of a given url which is relative to the parameter root * @param url * @param root * @return String */ public static String makeAbsoluteURL(String url, String root) { //if url is relative to rootConfigFileDirName make it absolute try { if(null == url) return null; URI uri = new URI(url); if (!uri.isAbsolute()) { // make it absolute to the config file uri = new URI(root + url); } return uri.toString(); } catch (URISyntaxException e) { //if url string could not be converted to absolute URL return source url return url; } } }