X-Git-Url: http://git.nikiroo.be/?p=fanfix.git;a=blobdiff_plain;f=src%2Fbe%2Fnikiroo%2Futils%2FIOUtils.java;h=3d252eac126df091a7fa8abf55999d95af6f288f;hp=0004a4e7d79008d303a5c00abf238f1ec65352fc;hb=HEAD;hpb=f8147a0ee57317e96d9ff0bf19573f7168d0354c diff --git a/src/be/nikiroo/utils/IOUtils.java b/src/be/nikiroo/utils/IOUtils.java index 0004a4e..3d252ea 100644 --- a/src/be/nikiroo/utils/IOUtils.java +++ b/src/be/nikiroo/utils/IOUtils.java @@ -29,13 +29,15 @@ public class IOUtils { * @param target * the target {@link File} * + * @return the number of bytes written + * * @throws IOException * in case of I/O error */ - public static void write(InputStream in, File target) throws IOException { + public static long write(InputStream in, File target) throws IOException { OutputStream out = new FileOutputStream(target); try { - write(in, out); + return write(in, out); } finally { out.close(); } @@ -49,17 +51,23 @@ public class IOUtils { * @param out * the target {@link OutputStream} * + * @return the number of bytes written + * * @throws IOException * in case of I/O error */ - public static void write(InputStream in, OutputStream out) + public static long write(InputStream in, OutputStream out) throws IOException { + long written = 0; byte buffer[] = new byte[4096]; int len = in.read(buffer); while (len > -1) { out.write(buffer, 0, len); + written += len; len = in.read(buffer); } + + return written; } /** @@ -275,8 +283,7 @@ public class IOUtils { write(stream, out); return out.toString("UTF-8"); } finally { - // do NOT close, or the related stream will be closed, too - // out.close(); + out.close(); } } @@ -363,13 +370,30 @@ public class IOUtils { return errorAcc; } + /** + * Open the resource next to the given {@link Class}. + * + * @param location + * the location where to look for the resource + * @param name + * the resource name (only the filename, no path) + * + * @return the opened resource if found, NULL if not + */ + public static InputStream openResource( + @SuppressWarnings("rawtypes") Class location, String name) { + String loc = location.getName().replace(".", "/") + .replaceAll("/[^/]*$", "/"); + return openResource(loc + name); + } + /** * Open the given /-separated resource (from the binary root). * * @param name - * the resource name + * the resource name (the full path, with "/" as separator) * - * @return the opened resource if found, NLL if not + * @return the opened resource if found, NULL if not */ public static InputStream openResource(String name) { ClassLoader loader = IOUtils.class.getClassLoader();