Inhalt einer .JPG Datei in einen OutputStream schreiben?

cybren

Mitglied
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
 
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.
 
Moin,

Java:
// 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
 
Zuletzt bearbeitet:
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?
 
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!
 
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?
 

Zurück
Oben