2016-04-11 13 views
2

Ich habe ein Stück Code, der einige binäre Daten über eine InputStream durch einen ByteArrayInputStream, wie diese neue vermeiden und stattdessen nur laden Sie die arr Parameter jeden Anruf InputStream/ByteArrayInputStream Objekte konstruierenWie kann ich InputStreams wiederverwenden?

Object do(byte[] arr) { 
    InputStream is = new ByteArrayInputStream(arr); 
    return conv(is); 

Ich möchte gesichert liest in einen vorhandenen Mitgliedsstrom in der Klasse, aber ich kann keinen einfachen Weg finden, dies zu tun. Ist dieses oder ein ähnliches Verhalten erlaubt oder gegen die empfohlene Verwendung von Streams?

+3

"Ich möchte vermeiden, neue InputStream/ByteArrayInputStream Objekte jeden Aufruf zu erstellen ..." => Warum? Es besteht keine Notwendigkeit, einen Eingabestream wiederzuverwenden. Außerdem werden Eingabeströme im Allgemeinen nur einmal als readyable betrachtet. – Seelenvirtuose

+0

Aus Leistungsgründen möchte ich nicht dieselben Daten immer und immer wieder lesen, verwenden Sie das gleiche Objekt, um alle Daten zu lesen – Madden

+0

Ich sehe kein Leistungsproblem durch Erstellen eines neuen 'ByteArrayInputStream' über das Zurücksetzen der Unterstützung Byte-Array darin. Sie scheinen andere Einschränkungen zu haben, die Sie in Ihrer Frage nicht ausgedrückt haben. Ich stimme daher zu, es als unklar zu schließen. – Seelenvirtuose

Antwort

0

Sie können dafür die Methode mark()/reset() verwenden.

Verwandte Themen