diff --git a/src/main/java/azgracompress/cache/QuantizationCacheManager.java b/src/main/java/azgracompress/cache/QuantizationCacheManager.java
index 02c083aba7a21a2bf23a130a30282d326114e8cb..0224eb7b1af40cbd8d97599c28d1fcbd77248a40 100644
--- a/src/main/java/azgracompress/cache/QuantizationCacheManager.java
+++ b/src/main/java/azgracompress/cache/QuantizationCacheManager.java
@@ -349,17 +349,32 @@ public class QuantizationCacheManager {
      * @return Cache file or null, if exception occurs.
      */
     private static ICacheFile readCacheFileImpl(final InputStream inputStream) {
-        try (final DataInputStream dis = new DataInputStream(inputStream)) {
-            final CacheFileHeader header = new CacheFileHeader();
+        final DataInputStream dis;
+        if (inputStream instanceof DataInputStream) {
+            dis = (DataInputStream) inputStream;
+        } else {
+            dis = new DataInputStream(inputStream);
+        }
+
+        final CacheFileHeader header = new CacheFileHeader();
+        try {
             header.readFromStream(dis);
+        } catch (final IOException e) {
+            System.err.println("Failed to read CacheFileHeader from input stream");
+            e.printStackTrace();
+            return null;
+        }
 
-            final ICacheFile cacheFile = getCacheFile(header.getQuantizationType());
-            assert (cacheFile != null);
+        final ICacheFile cacheFile = getCacheFile(header.getQuantizationType());
+        assert (cacheFile != null);
+        try {
             cacheFile.readFromStream(dis, header);
-            return cacheFile;
         } catch (final IOException e) {
+            System.err.println("Failed to read cache file from input stream.");
+            e.printStackTrace();
             return null;
         }
+        return cacheFile;
     }
 
     /**