fix #6 read empty files return non-empty data

input stream was using file data array as "available" data
even if it was only zeroes. output stream did not have this issue
since we reuse the behavior from ByteArrayOutputStream