ByteReader/StreamReader usw..

  • Guten Morgen...

    Ich hab ein Connection Objekt, welches mir eine (funktionierende) Verbindung herstellt. Nun kann man über das Connection Objekt unterschiedliche Typen initialisieren:

    connection.openInputStream();
    connection.openInputStreamReader();
    connection.openDataInputStream();

    theorie: darf man über ein Connection Objekt mehrere Typen initialisieren? Also sowohl openInputStream + openInputStreamReader bzw DataInputStream?

    Meine Verbindung funktioniert über DataInputStream, wenn ich aber zum "mischen" anfange, gibts ein durcheinander.

  • Hallo

    Kannst du noch dazu sagen um was fuer eine Connection es sich bei Deinem Problem handelt?

    Hab gerade mal in der StandardAPI (1.6) geschaut und die Interfaces java.sql.Connection, java.net.UrlConnection, javax.management.MBeanServerConnection besitzen die von dir angegebenen methoden nicht.


    Meine Annahme ist derzeit, das jede der 3 methoden eine neue Instanz von einem java.io.DataInputStream erstellt.

    d.h. open openInputStream() ist dann einfach nur ein downcast:

    Code
    public InputStream openInputStream(){
      return this.openDataInputStream();
    }

    und openInputStreamReader() ist ein Wrapper:

    Code
    public InputStreamReader openInputStreamReader(){
      return new InputStreamReader(this.openDataInputStream());
    }

    D.h. ob du einen InputStreamReader zusammen mit einem InputStream oeffnest oder stattdessen zwei InputStreamReader sollte egal sein, weil eh immer ein DataInputStream dahintersteckt.

    Das die Methoden "open..." und nicht "get..." heissen laesst darauf schliessen, das wirklich bei jedem Aufruf immer ein neuer Stream instanziert wird.

    Wenn Du jetzt zwei Streams zu demselben Objekt aufmachst, ist es meiner Meinung nach von der Quelle abhaengig was dann passiert. D.h. vielleicht darf immer nur ein Stream offen sein, vielleicht laufen dann einfach zwei parrallel oder vielleicht bekommst du sogar beim zweiten Aufruf den selben stream zurueck wie beim ersten. Eventuell ist auch in der Spezifikation von deinem Connection objekt festgelegt, wie sich diese methoden zu verhalten haben.

    Aber wie schon gesagt, das kommt ganz darauf an was fuer eine Connection das ist bzw. wie sie spezifiziert ist.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!