Java tutorial
/** * Vosao CMS. Simple CMS for Google App Engine. * * Copyright (C) 2009-2010 Vosao development team. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * * email: vosao.dev@gmail.com */ package org.vosao.utils; import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class StreamUtil { private static final Log logger = LogFactory.getLog(StreamUtil.class); public static byte[] readFileStream(final InputStream stream) throws IOException { byte[] buffer = new byte[4096]; ByteArrayOutputStream output = new ByteArrayOutputStream(); long contentLength = 0; int n = 0; while (-1 != (n = stream.read(buffer))) { contentLength += n; output.write(buffer, 0, n); } return output.toByteArray(); } public static String getTextResource(final String path) throws IOException { return getTextResource(StreamUtil.class.getClassLoader(), path); } public static InputStream getResource(ClassLoader classLoader, final String path) throws IOException { InputStream in = classLoader.getResourceAsStream(path); if (in == null) { throw new IOException("Empty resource."); } return in; } public static String getTextResource(ClassLoader classLoader, final String path) throws IOException { InputStream in = getResource(classLoader, path); if (in == null) { throw new IOException("Empty input stream."); } BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuffer buf = new StringBuffer(); while (reader.ready()) { buf.append(reader.readLine()).append("\n"); } return buf.toString(); } public static byte[] getBytesResource(final String path) throws IOException { return getBytesResource(StreamUtil.class.getClassLoader(), path); } public static byte[] getBytesResource(ClassLoader classLoader, final String path) throws IOException { InputStream in = getResource(classLoader, path); if (in == null) { throw new IOException("Empty input stream."); } return IOUtils.toByteArray(in); } /** * Converts an object to an array of bytes . Uses the Logging utilities in * j2sdk1.4 for reporting exceptions. * * @param object * the object to convert. * @return the associated byte array. */ public static byte[] toBytes(Object object) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); try { ObjectOutputStream oos = new java.io.ObjectOutputStream(baos); oos.writeObject(object); } catch (IOException ioe) { logger.error(ioe.getMessage()); } return baos.toByteArray(); } /** * Converts an array of bytes back to its constituent object. The input * array is assumed to have been created from the original object. * * @param bytes * the byte array to convert. * @return the associated object. */ public static Object toObject(byte[] bytes) { Object object = null; try { object = new ObjectInputStream(new ByteArrayInputStream(bytes)).readObject(); } catch (IOException ioe) { logger.error(ioe.getMessage()); } catch (ClassNotFoundException cnfe) { logger.info(cnfe.getMessage()); } return object; } }