Eine Datei in String Konvertieren und wieder zurück???



  • Hallon zusammen.

    Ich habe da ein Problem.

    Ich muss über XML-RPC eine ganze Datei zurück geben.
    Das Problem ist XML-RPC kann nur gewisse Datentypen.
    Deshalb hab ich mir überlegt String zu nehmen.

    Folgende problematik
    Eine Datei soll ein gelesen werden nd in ein String umgewandelt werden.

    Dann soll das an ein Client übertragen werden der dann das String in eine Datei umwandelt.

    Kann mir jemand bitte sagen wie ich das machen kann.

    Danke bye



  • Beim Einlesen wirst du ja wahrscheinlich ein byte[] oder ein char[] bekommen. Dies kannst du als Parameter für den String-Konstruktor nehmen. Die Daten sind halt dann in dem String drin.



  • Hi Cengiz.

    Ich habe es vorher mit Char versucht dafür habe ich die Writer Klassen verwendet.
    Da ergab sich aber ein anderes Problem und zwar das beim lesen der Datei einige Char Werte von der XML-RPC nicht akzeptiert wurden.

    Jetzt Versuche ich das mit BYTE´s das Lesen klappt auch und die Bytes speichere ich auch in einen String nur beim zurück Konvertieren geht das nicht.

    Hier ein bischen Code:

    //----------------------------------------------------------------------------
      public static String getZippedDocumentAsString(Document doc) {
        StringBuffer stringBuf = new StringBuffer();
        try {
          String fileName  = "daten";
          XMLOutputter xmlWriter = new XMLOutputter();
          FileOutputStream fileOut = new FileOutputStream(fileName + ".xml");
          xmlWriter.output(doc, fileOut);
    
          //Datei ind Zip Format umwandeln
          GZIPOutputStream zipout =
              new GZIPOutputStream( new FileOutputStream( fileName + ".zip" ) );
          byte buffer[] = new byte[blockSize];
          FileInputStream in = new FileInputStream( fileName + ".xml");
          int length;
    
          while ( (length = in.read(buffer, 0, blockSize)) != -1 )
            zipout.write( buffer, 0, length );
    
          in.close();
          zipout.close();
    
          //zip Datei auslesen und in ein String Schreiben.
          byte buffer2[] = new byte[blockSize];
          FileInputStream fileIn = new FileInputStream( fileName + ".zip");
          int length2;
          while ( (length2 = fileIn.read(buffer2, 0, blockSize)) != -1 )
            for(int i=0; i<length2; i++){
              stringBuf.append(buffer2[i]);
            }
          fileIn.close();
          System.out.println(stringBuf.toString());
        }
        catch (IOException ex) {ex.printStackTrace();}
        return stringBuf.toString();
      }
    
      //----------------------------------------------------------------------------
      public static Document getEntzippedDocument(String zippedString) {
        //String in eine Zip Datei umwandeln
        try {
          //FileReader fileReader = new FileReader("daten.zip");
          byte[] bytes = zippedString.getBytes();
    
          FileOutputStream fileOut = new FileOutputStream("daten2.zip");
          fileOut.write(bytes);
          fileOut.close();
        }
        catch (IOException ex) {ex.printStackTrace();}
        return null;
      }
      //---------------------------------------------------------------------------
    

    Lasst euch net stören von dem null Rückgabewert das wird nachher geändert.

    Die o.g Methoden funktionieren auch.
    Es wird beim Client eine Datei angelegt nur kann ich diese nicht mit dem WinRar oder Winzip öffnen. Das heisst doch für mich das einige Informationen nicht mehr vorhanden sind.

    Also folgendes soll das Programm leisten.
    Ich habe ein JDOM Document das soll in ein Stream umgewandelt werden und dann gezippt werden. Das Gezippte soll dann über XML-RPC an den Client übertragen werden, wo dann der client das ganze dann rückgängig macht.

    Ich habe vorher versucht das ganze mit einen ByteArrayIn bzw OutpustStream zu ralisieren das hat nicht ganz geklappt.

    Wie man zur Zeit sehen kann schreibe ich immer in eine Lokale Datei das eingentlich blöd ist weil das ganze nachher von mehreren clients genutzt wird.

    Falls jemand ne Lösung hat immer her damit 🙂

    Achso das sollte ich auch noch erwähnen.
    Der Server hat die JDK 1.4.1 und der Client die JDK 1.1.8

    Ich bin über jede Hilde dankebar.

    Danke

    BYE


Anmelden zum Antworten