From 8f3ed8493f2a17129c16c52e1d5e7991c6787669 Mon Sep 17 00:00:00 2001 From: bugy Date: Thu, 17 Apr 2014 16:32:32 +0400 Subject: [PATCH] improved reading InputStream to byte array, in case when we read not from file, but from a stream with unknown size --- src/net/iryndin/jdbf/reader/DbfReader.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/net/iryndin/jdbf/reader/DbfReader.java b/src/net/iryndin/jdbf/reader/DbfReader.java index 8ff5985..8d948bc 100644 --- a/src/net/iryndin/jdbf/reader/DbfReader.java +++ b/src/net/iryndin/jdbf/reader/DbfReader.java @@ -77,17 +77,14 @@ private DbfRecord createDbfRecord() { } private static byte[] toByteArray(InputStream input) throws IOException { - byte[] result = new byte[input.available()]; + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - byte[] buffer = new byte[DEFAULT_BUFFER_SIZE]; - int offset = 0; - int bufferLength; - while ((bufferLength = input.read(buffer)) > 0) { - System.arraycopy(buffer, 0, result, offset, bufferLength); - - offset += bufferLength; + byte[] data = new byte[DEFAULT_BUFFER_SIZE]; + int dataLength; + while ((dataLength = input.read(data)) > 0) { + buffer.write(data, 0, dataLength); } - return result; + return buffer.toByteArray(); } }