== Why is this an issue? The class ``++java.util.zip.GZIPInputStream++`` is already buffering its input while reading. Thus passing a ``++java.io.BufferedInputStream++`` to a ``++java.util.zip.GZIPInputStream++`` is redundant. It is more efficient to directly pass the original input stream to ``++java.util.zip.GZIPInputStream++``. Note that the default buffer size of ``++GZIPInputStream++`` is not the same as the one in ``++BufferedInputStream++``. Configure it if need be. This rule raises an issue when a ``++java.util.zip.GZIPInputStream++`` reads from a ``++java.io.BufferedInputStream++``. === Noncompliant code example [source,java] ---- import java.io.*; import java.util.zip.GZIPInputStream; public class Noncompliant { void deflateFile(final File file) throws IOException { try ( FileInputStream fileStream = new FileInputStream(file); BufferedInputStream bufferedStream = new BufferedInputStream(fileStream); InputStream input = new GZIPInputStream(bufferedStream); // Noncompliant ) { // process the input } } } ---- === Compliant solution [source,java] ---- import java.io.*; import java.util.zip.GZIPInputStream; public class Compliant { void deflateFile(final File file) throws IOException { try ( FileInputStream fileStream = new FileInputStream(file); InputStream input = new GZIPInputStream(fileStream); ) { // process the input } } } ---- == Resources * Stackoverflow question about usage of GZIPInputStream and the BufferedInputStream - https://stackoverflow.com/questions/4438085/seeking-out-the-optimum-size-for-bufferedinputstream-in-java/4438217#4438217[GZIPInputStream and the BufferedInputStream] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Remove the intermediate BufferedInputStream === Highlighting Primary location: the GZIPInputStream instantiation Secondary location: the BufferedInputStream instantiation. ''' == Comments And Links (visible only on this page) === on 9 Jul 2020, 09:37:33 Nicolas Harraudeau wrote: \[~pierre-loup.tristant] There are a few references in other articles but this one explains it the best so I would prefer to keep it if possible. Otherwise I'll replace it with https://stackoverflow.com/a/4438217[this stack overflow link] endif::env-github,rspecator-view[]