chris@1: /* chris@1: * SONEWS News Server chris@1: * see AUTHORS for the list of contributors chris@1: * chris@1: * This program is free software: you can redistribute it and/or modify chris@1: * it under the terms of the GNU General Public License as published by chris@1: * the Free Software Foundation, either version 3 of the License, or chris@1: * (at your option) any later version. chris@1: * chris@1: * This program is distributed in the hope that it will be useful, chris@1: * but WITHOUT ANY WARRANTY; without even the implied warranty of chris@1: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the chris@1: * GNU General Public License for more details. chris@1: * chris@1: * You should have received a copy of the GNU General Public License chris@1: * along with this program. If not, see . chris@1: */ chris@1: chris@1: package org.sonews.util.io; chris@1: chris@1: import java.io.BufferedReader; chris@1: import java.io.IOException; chris@1: import java.io.InputStream; chris@1: import java.io.InputStreamReader; chris@1: import java.net.URL; chris@1: import java.nio.charset.Charset; chris@1: chris@1: /** chris@1: * Provides method for loading of resources. chris@1: * @author Christian Lins chris@1: * @since sonews/0.5.0 chris@1: */ chris@1: public final class Resource chris@1: { chris@1: chris@1: /** chris@1: * Loads a resource and returns it as URL reference. chris@1: * The Resource's classloader is used to load the resource, not chris@1: * the System's ClassLoader so it may be safe to use this method chris@1: * in a sandboxed environment. chris@1: * @return chris@1: */ chris@1: public static URL getAsURL(final String name) chris@1: { chris@1: if(name == null) chris@1: { chris@1: return null; chris@1: } chris@1: chris@1: return Resource.class.getClassLoader().getResource(name); chris@1: } chris@1: chris@1: /** chris@1: * Loads a resource and returns an InputStream to it. chris@1: * @param name chris@1: * @return chris@1: */ chris@1: public static InputStream getAsStream(String name) chris@1: { chris@1: try chris@1: { chris@1: URL url = getAsURL(name); chris@1: if(url == null) chris@1: { chris@1: return null; chris@1: } chris@1: else chris@1: { chris@1: return url.openStream(); chris@1: } chris@1: } chris@1: catch(IOException e) chris@1: { chris@1: e.printStackTrace(); chris@1: return null; chris@1: } chris@1: } chris@1: chris@1: /** chris@1: * Loads a plain text resource. chris@1: * @param withNewline If false all newlines are removed from the chris@1: * return String chris@1: */ chris@1: public static String getAsString(String name, boolean withNewline) chris@1: { chris@1: if(name == null) chris@1: return null; chris@1: chris@1: BufferedReader in = null; chris@1: try chris@1: { chris@1: InputStream ins = getAsStream(name); chris@1: if(ins == null) chris@1: return null; chris@1: chris@1: in = new BufferedReader( chris@1: new InputStreamReader(ins, Charset.forName("UTF-8"))); chris@1: StringBuffer buf = new StringBuffer(); chris@1: chris@1: for(;;) chris@1: { chris@1: String line = in.readLine(); chris@1: if(line == null) chris@1: break; chris@1: chris@1: buf.append(line); chris@1: if(withNewline) chris@1: buf.append('\n'); chris@1: } chris@1: chris@1: return buf.toString(); chris@1: } chris@1: catch(Exception e) chris@1: { chris@1: e.printStackTrace(); chris@1: return null; chris@1: } chris@1: finally chris@1: { chris@1: try chris@1: { chris@1: if(in != null) chris@1: in.close(); chris@1: } chris@1: catch(IOException ex) chris@1: { chris@1: ex.printStackTrace(); chris@1: } chris@1: } chris@1: } chris@1: chris@1: }