package droidkit.io; import android.database.Cursor; import android.support.annotation.NonNull; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import droidkit.log.Logger; /** * @author Daniel Serdyukov */ public final class IOUtils { public static final int EOF = -1; public static final int BUFFER_SIZE = 64 * 1024; private IOUtils() { } public static void closeQuietly(@NonNull Closeable... closeable) { for (final Closeable c : closeable) { try { c.close(); } catch (IOException e) { Logger.error(e.getMessage()); } } } public static void closeQuietly(@NonNull Cursor... cursors) { for (final Cursor cursor : cursors) { if (!cursor.isClosed()) { cursor.close(); } } } public static void copy(@NonNull InputStream in, @NonNull OutputStream out) throws IOException { int bytes; final byte[] buffer = ByteArrayPool.get().obtain(); try { while ((bytes = in.read(buffer)) != EOF) { out.write(buffer, 0, bytes); } } finally { ByteArrayPool.get().release(buffer); } } public static void copyQuietly(@NonNull InputStream in, @NonNull OutputStream out) { try { copy(in, out); } catch (IOException e) { Logger.error(e.getMessage()); } } }