diff --git a/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/ReaderUtils.java b/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/ReaderUtils.java index 2da3ff9..cbef80b 100644 --- a/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/ReaderUtils.java +++ b/mmtf-codec/src/main/java/org/rcsb/mmtf/decoder/ReaderUtils.java @@ -1,5 +1,6 @@ package org.rcsb.mmtf.decoder; +import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -158,6 +159,11 @@ private static byte[] readFile(Path path) throws IOException { */ public static MmtfStructure getDataFromInputStream(InputStream inStream) throws IOException { + // ensure that InputStream is buffered if needed (i.e. not externally buffered e.g. via GZIPInputStream) + if (!(inStream instanceof BufferedInputStream)) { + inStream = new BufferedInputStream(inStream, 65536); + } + MessagePackSerialization mmtfBeanSeDeMessagePackImpl = new MessagePackSerialization(); return mmtfBeanSeDeMessagePackImpl.deserialize(inStream);