InputStream auslesen und zurückschreiben

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi !

Hab da mal ne FRage bzgl. Input/OutputStreams !!

Es geht um folgendes:

Ich lese über verschiedene Klassen einen InputStream aus einer Datei aus....funktioniert wunderbar !!
Jetzt gibt es die KLasse mit der main-Methode, sieht wie folgt aus:

Code:
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class BufrMessage {

   private IndicatorSection indicator = new IndicatorSection();
   private IdentificationSection identification = new IdentificationSection();
   private OptionalSection optional = new OptionalSection();
   private DataDescriptionSection description = new DataDescriptionSection();
   private DataSection data = new DataSection();
   private EndSection end = new EndSection();

   void readMessage(InputStream istream) throws BufrParseException 
   { 
	  
      indicator.readSection(istream);
      identification.readSection(istream);
      identification.detectMV(identification.data);
      if (identification.isOptionalSectionAvailable()) {
         optional.readSection(istream);
         optional.detectMV(optional.data);
      }
      description.readSection(istream);
      description.detectMV(description.data);
      data.readSection(istream);
      data.detectMV(data.data);
      end.readSection(istream);

      System.out.println("Parsed successfuly");
   }
   
   void writeMessage(OutputStream ostream) 
   {
   }


/**
    * @param args
    */
   public static void main(String[] args) 
   {
      try 
      {
    	  // read from FileInputStream
         FileInputStream file = new FileInputStream("d:\\wmo_sarep.bufr");
         BufrMessage msg = new BufrMessage();
         msg.readMessage(file);
         
         // write to FileOutpuStream
         FileOutputStream message = new FileOutputStream("d:\\test.bufr");
         BufrMessage msg2 = new BufrMessage();
         msg2.writeMessage(message);
         
      } 
      catch (Exception e) 
      {
         e.printStackTrace();
      }
   }

}

In der readMessage rufe ich halt die Klassen auf, die den InputStream auslesen !!
Ich möchte jetzt in der MEthode writeMessage genau den gleichen Stream wieder zurückschreiben, den ich bei der Methode readMessage einlese !!
Jetzt meine FRage:
Wie kann ich das bewerkstelligen ?? Geht das überhaupt ?? Zurückschreiben möchte ich diese Sache dann erst einmal in eine Datei test.bufr !!

vielen Dank
Schu
 
implementiert doch einfach die Methode

void writeMessage(OutputStream ostream)
{
}

was ist das problem? ostream.write??

was machen den die

private IndicatorSection indicator = new IndicatorSection();
private IdentificationSection identification = new IdentificationSection();
private OptionalSection optional = new OptionalSection();
private DataDescriptionSection description = new DataDescriptionSection();
private DataSection data = new DataSection();
private EndSection end = new EndSection();

können sich die auch rausschreiben??
 
Das Problem ist, das ich bei ostream.write nur nen Outputstream verwenden kann !! Da ich aber den ausgelesenen InputStream zurückschreiben will, habe ich nur ein Objekt vom Typ InputStream....wie kann ich diesen in der Methode writeMessage(OutputStream ostream) verwenden bzw. darauf zugreifen ?? Das ist im Großen und Ganzen mein Prob !!

Die anderen Objekte, wie z.B. indicator, identification sind alles Klassen, die dazu dienen verschiedene Teile ("Sections") des InputStreams auszulesen und auszuwerten....

mfg, Schu
 
Also in Hinsicht darauf, das man die ausgelesenen Daten evtl auch mal geringfügig ändern möchte, wäre kopieren (was ja read-only entsprechen würde) zu wenig...vielmehr möchte ich die über readMEssage(InputStream istream) eingelesenen Daten verwenden, um Sie mittels writeMessage(OutputStream ostream) in eine DAtei zurückzuschreiben....unter anderem halt auch ohne Veränderung der Daten:

Auf gut Deutsch....alles einlesen mittels einer Methode...anschließend mittels einer anderen Methode (in gleicher Klasse) das eingelesene in eine (andere) Datei schreiben

verständlich ?? oder verwirrend... :bahnhof:

mfg
Schu
 
schon klar,

aber kein von uns weiss, wie man die Informationen aus deinen

IndicatorSection
IdentificationSection
OptionalSection
DataDescriptionSection
DataSection
EndSection

wieder rausbekommt. Musst du eben auslesen und in den Outputstream rausschreiben
 
Nun ja...die anderen Klassen, wie z.B. IndicatorSection usw. sollen dabei keine Rolle spielen...sprich also, man ignoriert sie einfach, da Sie eh nur Abfragen über Nullwerte und Ausgaben auf die Konsole enthalten !! Die interessieren mich allerhöchstens später....mir geht es erst einmal darum, unabhängig von den enthaltenen Daten in der Datei diese auszulesen (mittels readMEssage()) und über writeMessage() in eine andere DAtei zu schreiben....

mfg, Schu
 
dann speichere die erhaltenen Daten halt in der Readmessage methode irgendwohin (Member-Variable)

und verwende diese gespeicherten daten dann in der writeMessage Methode wieder beim rausschreiben

ist alles Quark, weil du beim read und write jeweils ein neues

BufrMessage

erzeugst, also kannst du zum zwischenspeichern keine Membervariablen nehmen

übergibs halt beim write als Parameter
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben