OutputStream aus String erzeugen

jackydany

Grünschnabel
Hallo zusammen!

Bin neu hier und habe direkt eine Frage.

Ich versuche grade mich in Java einzuarbeiten. C Grundlagen habe ich sehr Gute, OOP hingegen eher weniger. Aber es wird langsam :D

Zu meinem Problem:

Ich habe eine Methode welche einen OutputStream benötigt.
Jedoch bekomme ich diesen nicht "erstellt".

Hier mein Qeullcode:
Code:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;




public class Main {

    public static void main(String[] args) throws Exception{
   

        InputStream is = null;
        String str = "hallo";
        OutputStream out = null;

        
        byte [] byteArray = str.getBytes();
        String s= new String (byteArray);
        
         /*hier kommt dsa PRoblem, hier erhalte ich eine NullPointerException*/
         out.write(str.getBytes());

          //oder
          out.write(byteArray);

    }
}


noermalerweise sollte doch OutputStream.write(byteArray) das ganze bytearray in den blöden outputstream ballern oder nicht?
und diesen könnte ich dann einfach übergeben.

Leider bekomme ich halt immer NullPointerExceptions!

hat jemand einen Tip für mich?

Ich möchte auf Dauer einfach einen character in den outputstream schreiben, einen String oder nachher Daten (dazu komme ich aber viel später).

Mit meinem InputStream klappt alles wie es soll!
Bin verwirrt!

Hoffe Ihr könnt mir helfen
Vielen Dank
 
Moin,

versuch es mal so:

Java:
String str = "hallo";
OutputStream out = new OutputStream();
out.write( str.getBytes() );

Gruß
Klaus
 
OutputStream out = null;

Dein Outputstream wird niemals initialisiert. Dein Outputstream braucht schon ein Ziel wo er das ganze "hinballern" kann. Schau mal in die API nach den abgeleiteten Klassen, vielleicht ist da eine dabei die dir zusagt. Ansonsten kann ich dir keinen Tipp geben, ohne zu wissen was dein Programm machen soll.

@vfl_freak
Ein Outputstream ist abstract, da man je nach Anwendung eine andere Implementierung benutzen sollte.
 
Zuletzt bearbeitet:
Danke!

Hab dann gestern (heute morgen) die ByteArrayOuputStream klasse genommen.
Damit klappts wunderbar.

Nun gehts mit anderen Problemen weiter! Aber bin schon ein große Stück voran gekommen. Aller Anfang ist schwer....
 
@vfl_freak
Ein Outputstream ist abstract, da man je nach Anwendung eine andere Implementierung benutzen sollte

Moin,

hmm, aber ich kann doch auch so benutzen, oder nicht :confused:

Habe hier in dem von mir übernommenen Projekt etliche Stellen, wo die Socket-Kommunikation mit einem Serverprogramm mit derartigen Streams gehandelt wird - etwa so:

Java:
...
Socket csock = new Socket();
...
OutputStream cout = csock.getOutputStream();
InputStream cin = csock.getInputStream();
cout.write( RQB );
byte[] blwPBufferTemp = new byte[MAXBUFFERLEN];
byte[] blwPBufferHeader = new byte[16];
int len = 0;
len = cin.read( blwPBufferHeader, 0, 16 );
...

Worauf sollte ich denn das sinnvollerweise umbauen ... ByteArrayOutputStream ? ? ... und wenn JA, warum :confused:

Danke und Gruß
Klaus
 
Zuletzt bearbeitet:
In deinem Fall initialisierst du ja den Outputstream ja selbst nicht mit einem new. Du benutzt den, den du vom Socket bekommen hast. Und dieser ist der abstrakte Outputstream, da es dir zum benutzen egal ist welche Implementierung das ist.
 

Neue Beiträge

Zurück