# Inhalt einer .JPG Datei in einen OutputStream schreiben?



## cybren (10. Dez 2014)

Hallo,
ich habe eine Anwendung wo ich aus einem Ordner, Textdateien über einen Server via OutputStream downloade. Das klapp auch alles super. Ich möchte jetzt aber auch .JPG Dateien downloaden können. Ich arbeite bei den Textdateien mit einem PrintWriter der die Strings die er ausließt, in den OutputStream schreibt, da in einer .JPG aber keine Chars stehen(soweit ich weiß) kann ich das natürlich nicht verwenden... 
Wie würde ich jetzt den Inhalt der .JPG Datei in den Stream bekommen? ich dachte dabei an Bytes wobei ich da auch nicht ganz weiß wie ich Bytes in den InputStream bekomme...:bahnhof:

Vielen Dank schonmal an jeden der sich meines Problems annehmen
MFG Cybren2


----------



## Gucky (10. Dez 2014)

Was sollte denn sonst in einer .JPG stehen?

Aber du hast recht, dass das nicht funktionieren könnte. Da solltest du lieber byteweise arbeiten, da du mit den chars Gefahr läufst einen halben char am Ende noch über zu haben.


----------



## cybren (11. Dez 2014)

Ok und wie würde ich es dann anstellen den Inhalt der Datei Byte weiße einzulesen und danach in den OutputStream zu schreiben?


----------



## VfL_Freak (11. Dez 2014)

Moin,


```
// Textbuffer in korrekter (eingelesener) Länge füllen
byte[] cTxtBuf = new byte[iLen];
if( iLen > 0 )
{
	for( int i = 0; i < iLen; i++ )
	{
	    cTxtBuf[i] = buf[i];
	}
}
// ---------------------------------------------------------------
String strDatei = "myFile.txt";
try
{
	BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream(strDatei) );
	bos.write( cTxtBuf, 0, cTxtBuf.length );
	if( bos != null )
	{
	    bos.close();
	}
}
catch( IOException ex )
{
    System.out.println( "Fehler beim Schreiben der Datei !" );
}
```
Vielleicht so ???

Gruß
Klaus


----------



## cybren (11. Dez 2014)

OK vielen Dank für den Code.
2 Fragen dazu: was ist buf[] und wenn ich das ganze jetzt in meiner Netzwerkanwendung benutzen möchte, kann ich dann auch einen BufferedOutputStream verwenden oder muss da den ganz normalen Outputstream verwenden?


----------



## VfL_Freak (12. Dez 2014)

Moin,

ah ok, war etwas aus dem Zusammenhang gerissen ... 
"buf" ist hier bei mir der Buffer mit dem Ergebnis einer Datenbankabfrage!

Welchen Stream Du verwendest, ist grundsätzlich egal, das hängt u. U. von verschiedenen Gegebenheiten ab:
Galileo Computing :: Java ist auch eine Insel - 15 Einführung in Dateien und Datenströme

Bei uns hier werden alle Buffer gepuffert !

Gruß
Klaus


----------



## cybren (12. Dez 2014)

Ok ich glaube ich habe meine Frage etwas falsch vormuliert... Ich möchte die bytes in den OutputStream eines Sockets schreiben. dafür kann soweit ich weiß aber keinen FileOutputStream verwenden!


----------



## VfL_Freak (13. Dez 2014)

Moin,

schon mal gegoogled ??

https://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html
Javabeginners - Socketverbindung

Gruß
Klaus


----------



## cybren (13. Dez 2014)

Eine letzte Frage hätte ich dann noch.
Ich schreibe in den einen OutputStream jetzt einen Int der größer ist 127 wenn ich dann auf der anderen Seite auslese kommt ein negativer Integer heraus... z.B. bei 229 kommt -27 heraus wie schaffe ich es denn jetzt das wieder der ursprüngliche int wieder heraus kommt?


----------



## Gucky (13. Dez 2014)

Google mal nach toUnsignedInt(byte). Da wirst du bei Galileo Computing fündig.


----------



## cybren (13. Dez 2014)

VIEEEEEELEN DANK! damit ist das Thema hier dann auch beendet!


----------

