From 0924c06729b7ee9b75afd8ed166fb61640e51f2b Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Thu, 23 Jan 2020 18:10:02 -0500 Subject: [PATCH] use buffer to copy --- .../util/io/FilterInputStreamViaOutputStream.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/cobbzilla/util/io/FilterInputStreamViaOutputStream.java b/src/main/java/org/cobbzilla/util/io/FilterInputStreamViaOutputStream.java index 9ed65ed..e4ea6ba 100644 --- a/src/main/java/org/cobbzilla/util/io/FilterInputStreamViaOutputStream.java +++ b/src/main/java/org/cobbzilla/util/io/FilterInputStreamViaOutputStream.java @@ -15,6 +15,7 @@ import static org.cobbzilla.util.reflect.ReflectionUtil.instantiate; public class FilterInputStreamViaOutputStream extends PipedInputStream implements Runnable { private static final int DEFAULT_PIPE_BUFFER_SIZE = (int) (64 * Bytes.KB); + private static final int DEFAULT_COPY_BUFFER_SIZE = (int) (8 * Bytes.KB); private static final long THREAD_TERMINATE_TIMEOUT = TimeUnit.SECONDS.toMillis(10); private InputStream in; @@ -59,17 +60,17 @@ public class FilterInputStreamViaOutputStream extends PipedInputStream implement @Override public void run() { try { - int c; - int counter = 0; - while((c = in.read()) >= 0) { - out.write(c); - counter++; + final byte[] buf = new byte[DEFAULT_COPY_BUFFER_SIZE]; + int bytesRead; + while ((bytesRead = in.read(buf)) >= 0) { + out.write(buf, 0, bytesRead); } out.flush(); } catch (IOException e) { - log.error("run: error copying bytes: "+shortError(e)); - throw new RuntimeException(e); + final String msg = "run: error copying bytes: " + shortError(e); + log.error(msg); + throw new RuntimeException(msg, e); } finally { closeQuietly(out);