jodd-servlet/src/main/java/jodd/servlet/filter/GzipResponseStream.java
@Override
	public void write(final byte[] b, final int off, final int len) throws IOException {

		if (closed) {
			throw new IOException("Cannot write to a closed output stream");
		}

		if (len == 0) {
			return;
		}

		// Can we write into buffer ?
		if (len <= (buffer.length - bufferCount)) {
			System.arraycopy(b, off, buffer, bufferCount, len);
			bufferCount += len;
			return;
		}

		// There is not enough space in buffer. Flush it ...
		flushToGZip();

		// ... and try again. Note, that bufferCount = 0 here !
		if (len <= (buffer.length - bufferCount)) {
			System.arraycopy(b, off, buffer, bufferCount, len);
			bufferCount += len;
			return;
		}

		// write direct to gzip
		writeToGZip(b, off, len);
	}
@Override
	public void write(final byte[] b, final int off, final int len) throws IOException {

		if (closed) {
			throw new IOException("Cannot write to a closed output stream");
		}

		if (len == 0) {
			return;
		}

		// Can we write into buffer ?
		if (len <= (buffer.length - bufferCount)) {
			System.arraycopy(b, off, buffer, bufferCount, len);
			bufferCount += len;
			return;
		}

		// There is not enough space in buffer. Flush it ...
		flushToGZip();

		// ... and try again. Note, that bufferCount = 0 here !
		if (len <= (buffer.length - bufferCount)) {
			System.arraycopy(b, off, buffer, bufferCount, len);
			bufferCount += len;
			return;
		}

		// write direct to gzip
		writeToGZip(b, off, len);
	}
@ Override public void write ( final byte [ ] b , final int off , final int len ) throws IOException { if ( closed ) { throw new IOException ( "Cannot write to a closed output stream" ) ; } if ( len == 0 ) { return ; } // Can we write into buffer ? if ( len <= ( buffer . length - bufferCount ) ) { System . arraycopy ( b , off , buffer , bufferCount , len ) ; bufferCount += len ; return ; } // There is not enough space in buffer. Flush it ... flushToGZip ( ) ; // ... and try again. Note, that bufferCount = 0 here ! if ( len <= ( buffer . length - bufferCount ) ) { System . arraycopy ( b , off , buffer , bufferCount , len ) ; bufferCount += len ; return ; } // write direct to gzip writeToGZip ( b , off , len ) ; }
Writes <code>len</code> bytes from the specified byte array, starting at
the specified offset, to our output stream.

@param b      byte array containing the bytes to be written
@param off    zero-relative starting offset of the bytes to be written
@param len    number of bytes to be written
Writes <code > len< / code > bytes from the specified byte array starting at the specified offset to our output stream .