/* * Copyright 2003 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package at.gv.egovernment.moaspss.util; 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.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 { final URL url = new URL(urlString); final InputStream in = new BufferedInputStream(url.openStream()); final 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 { final 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 { final BufferedInputStream in = new BufferedInputStream(new FileInputStream(filename)); final 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 { final 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 { final ClassLoader cl = FileUtils.class.getClassLoader(); final BufferedInputStream in = new BufferedInputStream(cl.getResourceAsStream(name)); final 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 { final 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 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 { final byte[] buffer = new byte[0xFFFF]; for (int len; (len = fis.read(buffer)) != -1;) { fos.write(buffer, 0, len); } } catch (final IOException e) { System.err.println(e); } finally { if (fis != null) { try { fis.close(); } catch (final IOException e) { e.printStackTrace(); } } if (fos != null) { try { fos.close(); } catch (final IOException e) { e.printStackTrace(); } } } } public static void copyFile(File src, File dest) { try { copy(new FileInputStream(src), new FileOutputStream(dest)); } catch (final IOException e) { e.printStackTrace(); } } }