[Java] java.io.ByteArrayOutputStream – dostęp do wewnętrznego bufora

Klasa java.io.ByteArrayOutputStream jest bardzo użyteczna. Czasem jednak chcielibyśmy uzyskać bezpośredni dostęp do wewnętrznego bufora a nie tworzyć jego kopię za pomocą ByteArrayOutputStream#toByteArray()

import java.io.ByteArrayOutputStream;

/**
 * <p>
 * Klasa rozszerza {@link java.io.BufferedOutputStream} umożliwiając dostęp do
 * wewnętrznego bufora
 * </p>
 * 
 * @author Jarek Przygódzki
 * 
 */
public class AccessibleByteArrayOutputStream extends ByteArrayOutputStream {

	public AccessibleByteArrayOutputStream(int size) {
		super(size);
	}

	public AccessibleByteArrayOutputStream() {
		super();
	}

	/**
	 * <p>
	 * Zwraca wewnętrzny bufor strumienia. Ważne - tylko pierwsze
	 * {@link AccessibleByteArrayOutputStream#size()} bajtów zawiera poprawne
	 * dane!
	 * </p>
	 */
	public byte[] getDataBuffer() {
		return buf;
	}
}

Dzięki temu możemy np. utworzyć strumień wejściowy bez zbędnego kopiowania

InputStream inputStream = new ByteArrayInputStream(
	outputStream.getDataBuffer(), 0 , outputStream.size());

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s