/******************************************************************************* *******************************************************************************/ package at.gv.egiz.eaaf.core.impl.utils; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URI; 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 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 * @throws MalformedURLException */ public static String makeAbsoluteURL(String url, URI root) throws MalformedURLException { return makeAbsoluteURL(url, root.toURL().toString()); } /** * 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 File keyFile; String newURL = url; if(null == url) return null; if (url.startsWith("http:/") || url.startsWith("https:/") || url.startsWith("file:/") || url.startsWith("ftp:/")) { return url; } else { // check if absolute - if not make it absolute keyFile = new File(url); if (!keyFile.isAbsolute()) { keyFile = new File(root, url); if (keyFile.toString().startsWith("file:")) newURL = keyFile.toString(); else newURL = keyFile.toURI().toString(); } return newURL; } } private static void copy( InputStream fis, OutputStream fos ) { try { byte[] buffer = new byte[ 0xFFFF ]; for ( int len; (len = fis.read(buffer)) != -1; ) fos.write( buffer, 0, len ); } catch( IOException e ) { System.err.println( e ); } finally { if ( fis != null ) try { fis.close(); } catch ( IOException e ) { e.printStackTrace(); } if ( fos != null ) try { fos.close(); } catch ( IOException e ) { e.printStackTrace(); } } } public static void copyFile(File src, File dest) { try { copy( new FileInputStream( src ), new FileOutputStream( dest ) ); } catch( IOException e ) { e.printStackTrace(); } } }