InputStream kopieren?

Status
Nicht offen für weitere Antworten.

Gumble

Bekanntes Mitglied
Ich habe einen Inputstream der ein XML-File beinhaltet. Nun moechte ich dieses File parsen und dann in ein Blob speichern. Nach dem der SAXReader fertig ist, ist der Stream natuerlich geschlossen. Komm ich nochmal an die begehrten Bytes ran? Oder muss ich doch noch einmal die Quelle (javax.mail.Part) anzapfen?

Hier der Blobcode:
Code:
java.sql.Blob b = new org.hibernate.lob.BlobImpl.BlobImpl(is,is.available());
 

MPW

Top Contributor
Wie waere es, wenn du dir einfach die Ergebnisse holst? Was macht es fuer einen Sinn ein zweites Mal die Rohdaten auszuwerten?
 

Bleiglanz

Gesperrter Benutzer
du machst ja wahrscheinlich

b.getBinaryStream

jetzt einfach einen geeigneten FilterInputStream drum rum wickeln und z.B. alle bytes "wegkopieren"

(oder den Umweg über ein byte[] und ByteArrayInputStream machen)
 

Gumble

Bekanntes Mitglied
hmm, gruebel.

also wenn ich nun einen eigenen FilterInputStream schreibe:
Code:
	public int read() throws IOException {
		int i = super.read();		
		// ?
		return i;
	}
dann krieg ich ja die gerade gelesenen bytes (i) - nur ist es wirklich sinnvoll die in ein statisches array zu packen - ich weiss ja nicht wirklich wieviel noch kommt? Eine List wuerde zuviel Performance fressen, oder?
Es geht um Grundsatzentscheidungen:

MyFilterInputStream:
Code:
stream -> byte[] (Blob)
       -> stream (SAX)
oder Daten zu erst speichern:
Code:
stream -> byte[] -> stream1 (Blob)
                 -> stream2 (SAX)
(das meintest Du, MPW, oder?)

Dachte es gibt vielleicht schon einen fertigen Streamduplizierer:
Code:
stream -> stream1 (Blob)
       -> stream2 (SAX)
 

Gumble

Bekanntes Mitglied
hmm:
Code:
import java.io.ByteArrayOutputStream;
import java.io.FilterInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SaveBytesInputStream extends FilterInputStream {

	private ByteArrayOutputStream bos = new ByteArrayOutputStream();
	
	public SaveBytesInputStream(InputStream in) {		
		super(in);		
	}

	@Override
	public int read() throws IOException {
		int i = super.read();
		bos.write(i);			
		return i;
	}
	
	public byte[] getBytes(){
		return bos.toByteArray();
	}
}

nun werf ich den Parser an und danach will ich den Blob fuellen:
Code:
Blob xml = new BlobImpl(stream.getBytes());
Leider ist die Speicherung nicht komplett:
  • <?xml version="1.0" encoding="utf-8"?>

Der Rest des XMLs fehlt. Liegt das an mir oder an MySql/Hibernate?
 

Gumble

Bekanntes Mitglied
hab mal bisschen rumprobiert:
Code:
public class SaveBytesInputStream extends FilterInputStream {

	private ByteArrayOutputStream bos = new ByteArrayOutputStream();

	ArrayList<Byte> content = new ArrayList(4096);

	public SaveBytesInputStream(InputStream in) {		
		super(in);
		
	}

	@Override
	public int read() throws IOException {
		int i = super.read();
		bos.write(i);	
		content.add(new Byte((byte) i));		
		return i;
	}
	
	public byte[] getBytes(){		
		return bos.toByteArray();
	}
	
	public byte[] getBytesOutOfArray(){
		byte[] out = new byte[content.size()];
		for (int i = 0; i < out.length; i++){
			out[i] = content.get(i).byteValue();
		}
		return out;
	}
}
Und auch wenn ich die Bytes ueber die ArrayList mir wieder hole: es wird genauso nur das erste Knotenelement gespeichert. Hab da den SAXReader in verdacht:
Code:
Document document = new SAXReader().read(inputStream);
Geht der nicht vom Anfang bis zum Ende des Streams durch?
 

Gumble

Bekanntes Mitglied
ok wie vermutet, der SAX sucked ;)

nun bin das Problem so rangegangen:
Code:
InputStream -> String -> StringReader (SAX)
                      -> getBytes() (Blob)

Gibts bessere Loesungen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
W Mal ein paar generelle Fragen zu InputStream und OutputStream Allgemeine Java-Themen 4
L Input/Output InputStream öffnen? Allgemeine Java-Themen 12
P Input/Output Inputstream verhält sich verschieden Allgemeine Java-Themen 9
R Inputstream lesen mit Pointer Allgemeine Java-Themen 0
M InputStream auslesen Allgemeine Java-Themen 1
M String aus InputStream Allgemeine Java-Themen 3
C Threading mit BufferedReader/InputStream & sockets Allgemeine Java-Themen 0
B BufferedWriter in InputStream oder Zeichen-Stream in Byte-Stream Allgemeine Java-Themen 5
P Scanner als Inputstream für Java Prozess Allgemeine Java-Themen 4
E POI-InputStream selber wählen Allgemeine Java-Themen 2
S RandomAcessFile das einen InputStream wrappt..? Allgemeine Java-Themen 2
M Umwandlung ByteArrayOutputStream in InputStream Allgemeine Java-Themen 5
1 InputStream hängt Allgemeine Java-Themen 4
H Input/Output InputStream: 32-Bit-Ganzzahl (DWORD) binär lesen Allgemeine Java-Themen 5
D Datentypen Reader/InputStream wiederverwenden? Allgemeine Java-Themen 11
K Inputstream -> Bilder Allgemeine Java-Themen 23
1 InputStream liest die letzte Zeile nicht ein Allgemeine Java-Themen 2
J Java Datei aus FTP in ein INputstream Allgemeine Java-Themen 2
J InputStream Zip-File Allgemeine Java-Themen 3
F ImageIO cant create InputStream Allgemeine Java-Themen 9
S InputStream "weiterleiten" Allgemeine Java-Themen 12
T Integer aus InputStream lesen Allgemeine Java-Themen 3
T Undwandlung eines String in einen InputStream? Allgemeine Java-Themen 3
M Selbst geschriebener InputStreamReader über einen beliebigen InputStream Allgemeine Java-Themen 4
T OutputStream to InputStream Allgemeine Java-Themen 8
S von OutputStream in InputStream schreiben ohne das es blockiert..? Allgemeine Java-Themen 2
reibi BufferedImage nach InputStream Allgemeine Java-Themen 10
R InputStream zweimal lesen Allgemeine Java-Themen 2
G InputStream und File Allgemeine Java-Themen 11
B InputStream zu URL umwandeln Allgemeine Java-Themen 2
F Teile vom InputStream schreiben Allgemeine Java-Themen 9
J InputStream aus URL funktioniert nicht Allgemeine Java-Themen 7
H InputStream Problem mit externem Kommandozeilenprogramm Allgemeine Java-Themen 2
W InputStream öfters nutzen Allgemeine Java-Themen 9
R The mark method of InputStream does nothing. Allgemeine Java-Themen 4
V String oder doch InputStream? Allgemeine Java-Themen 9
A Inputstream in Outputstream umleiten Allgemeine Java-Themen 7
Nils_Langner InputStream soll sich bei neuen Daten melden Allgemeine Java-Themen 2
R InputStream - seltsamer Output Allgemeine Java-Themen 2
S java.io.InputStream.read(byte[] b) überschreiben Allgemeine Java-Themen 33
N InputStream erst ab gegebener Position Allgemeine Java-Themen 4
R InputStream Allgemeine Java-Themen 5
D Inputstream aus StringBuffer Allgemeine Java-Themen 3
G inputstream() to imageicon() Allgemeine Java-Themen 7
D Durch OutpustStream und InputStream dateien in eine jar sch Allgemeine Java-Themen 3
G aus String einen InputStream erstellen Allgemeine Java-Themen 2
C Wie kann man im InputStream nach einer Zeichenkette suchen? Allgemeine Java-Themen 4
R Aus InputStream wieder eine Datei erzeugen? Allgemeine Java-Themen 2
N String als Inputstream Allgemeine Java-Themen 4
N Suchen in InputStream/ByteArrayOutputStream Allgemeine Java-Themen 11
M InputStream.read abbrechen Allgemeine Java-Themen 2
M Ordner kopieren Allgemeine Java-Themen 5
S Referenzdatentyp kopieren Allgemeine Java-Themen 5
I Wie Vektor-Grafik in die Zwischenablage kopieren? Allgemeine Java-Themen 2
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
M Dateien schneller kopieren Allgemeine Java-Themen 1
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
B In zwischenablage kopieren Allgemeine Java-Themen 2
F Datentypen Kopieren von Datentypen Allgemeine Java-Themen 10
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
N String ins Clipboard kopieren ohne makieren. Allgemeine Java-Themen 12
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
F Java moved Files statt sie zu kopieren Allgemeine Java-Themen 12
X Dateien von der Jar zum Ordner kopieren. Allgemeine Java-Themen 4
J PDF-Datei aus JAR-Archiv in Dateisystem kopieren Allgemeine Java-Themen 1
S Einen übergebenen String kopieren Allgemeine Java-Themen 3
S in Zip kopieren -- Backup-Programm Allgemeine Java-Themen 9
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
T Ordner samt Dateien kopieren Allgemeine Java-Themen 11
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
P jar aus der jar kopieren XD Allgemeine Java-Themen 4
M Pakete in Ordner Kopieren Allgemeine Java-Themen 7
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
kodela Problem mit Kopieren über FileChannel Allgemeine Java-Themen 4
H Kopieren sehr langsam Allgemeine Java-Themen 5
I Java Ordner kopieren [Error] Allgemeine Java-Themen 6
E Files Kopieren Allgemeine Java-Themen 8
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
Z Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea Allgemeine Java-Themen 5
S exe Kopieren Allgemeine Java-Themen 11
E Ordner rekursiv kopieren Allgemeine Java-Themen 8
J Standard-I´/O kopieren Allgemeine Java-Themen 5
R kopieren von Dateien und Verzeichnissen - UNICODE? Allgemeine Java-Themen 4
S Kopieren von Datei führt zu Beschädigung Allgemeine Java-Themen 7
D markierten Text kopieren Allgemeine Java-Themen 2
O ist tiefes Kopieren sinnvoll? Allgemeine Java-Themen 14
B Zertifikat des Users speichern (serialisieren oder kopieren) Allgemeine Java-Themen 2
S Dateiinhalt kopieren Allgemeine Java-Themen 4
G Object mit clone kopieren Allgemeine Java-Themen 21
F Kopieren eines Objekts Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben