tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
11
ZUGRIFFE
1937
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Hi

    Ich lese ein ZipArchiv byteweise ein.
    Dieses byte[] will ich wieder in ein zipArchiv umwandeln. So wie ich es gemacht habe ist es so, dass in dem ziparchiv nocheinmal das zipachriv enthalten ist, dass ich einlesen wollte, dass allerdings fehlerhaft ist und es enthält auch den eigentlichen Inhalt vom ZipArchiv
    .
    Code java:
    1
    2
    3
    4
    5
    
    byte[] array = w.getDatabaseUpdate("111");
             FileOutputStream f = new FileOutputStream("c:/zip.zip");
             f.write(array);
             f.flush();
             f.close();
    w.getDatabaseUpdate("111"); -> erzeugt ein Zip Archiv aus mehreren xml-dateien
    -> liest das zip Archiv byteweise ein und übergibt es in einem byte[]

    Eigentlich soll die Ordnerstruktur so sein:
    archiv.zip
    -a.xml
    -b.xml
    -c.xml

    sie ist aber so:
    archiv.zip
    -blub.zip(das voher in der Methode erzeuge zip -> ist fehlerhaflt, lässt sich nicht öffnen)
    -a.xml
    -b.xml
    -c.xml

    Hoffe jemand weiß rat

    LG
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    Code :
    1
    
    w.getDatabaseUpdate("111");
    Ist das eine Klasse von dir? Falls ja, poste mal bitte, was diese Methode macht.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    public byte[] getDatabaseUpdate(String hashcode) throws IOException {
            if(hc.checkHashCode(hashcode) == true){
                File zipArchiv = zipGenerator.createZip();
                System.out.println(zipArchiv.getName());
                zipByte = changeToByte.changeToByte(zipArchiv);
                return zipByte;
            }
            return null;
        }
    File zipArchiv = zipGenerator.createZip(); -> bei dem Aufruf bekomme ich ein zipArchiv mit mehreren xml-dateien. (Wäre zu viel es hier zu posten)

    zipByte = changeToByte.changeToByte(zipArchiv); -> wird das File byteweise eingelesen
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    
    public byte[] changeToByte(File file) throws IOException {
        
                  final ByteArrayOutputStream bo;
        
                  final long length = file.length();
         
                  if (length < Integer.MAX_VALUE) {
                      bo = new ByteArrayOutputStream((int) length);
        
                  } else {
     
                      bo = new ByteArrayOutputStream(Integer.MAX_VALUE);
                  }
                  final FileInputStream in = new FileInputStream(file);
                  int c;
                  while ((c = in.read()) != -1) {
                      bo.write(c);
                  }
                  in.close();
                  bo.close();
                  final byte[] byteArray = bo.toByteArray();
                  return byteArray;
              }
     

  4. #4
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hast du mal kontrolliert, ob die Zip-Datei, die vom zipGenerator erstellt wird, schon richtig ist?

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  5. #5
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Ja die ist richtig. Es geht jetzt halt nur darum, wie ich diese date korrekt byteweise einlesen kann bzw. byteweise kopieren kann
     

  6. #6
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Ich mache dir nachher mal ein Beispiel fertig.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  7. #7
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Danke das ist total nett von dir. Also nochmal, dass die Frage klarer wird:
    ich habe ein Zip Archiv erstellt.
    Dieses ZipArchiv lese ich byteweise in ein byte[] ein.
    Durch dieses byte[] will ich ein neues zip Achiv erstellen.
    Die beiden Archive sollen vom Aufbau und Inhalt identisch sein, nur der Speicherort und ggf. die Namen sind unterschiedlich.
     

  8. #8
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Also ich hab kein Archiv erstellt, sondern ein vorhandenes genommen.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
     
     
    public class ZipByteExample
    {
     
      public static void main(String[] args) throws Exception
      {
        File zipFile = new File("I:/src.zip");
        
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        FileInputStream fis = new FileInputStream(zipFile);
        
        int i = 0;
        while((i=fis.read())!= -1){
          bos.write(i);
        }
        fis.close();
        bos.close();
        byte[] zipFileBytes = bos.toByteArray();
        
        FileOutputStream fos = new FileOutputStream("I:/teste.zip");
        fos.write(zipFileBytes);
        fos.flush();
        fos.close();
        
      }
      
    }

    Warum möchtest du es aber als ByteArray einlesen, hat das einen bestimmten Grund?

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  9. #9
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    Ja, es werden Daten vom Server zum Client durch Webservice gesendet. Und diese Dateien übergebe ich byteweise. Hätte das auch mit soap attachment machen können, aber das hat mir immer fehler geschmießen....
    Deshalb hatte man mir geraten das so zu machen.

    LG
     

  10. #10
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    @Sascha: Warum postest du nochmal das was schon dasteht?

    @Saskia: Ich nehme mal an dass deine Methode alles packt was in deinem Verzeichnis liegt, also neben deinen XML-Datei auch alte zip-Dateien die da noch rumliegen. Kann das sein?
     

  11. #11
    Saskia21 Saskia21 ist offline Mitglied Silber
    Registriert seit
    Feb 2008
    Beiträge
    53
    habe nur versucht auf die Frage antworten:
    Warum möchtest du es aber als ByteArray einlesen, hat das einen bestimmten Grund?
     

  12. #12
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    @zeja
    Ich wollte nur was posten, wo ich sicher bin, dass es funktioniert.
    Ich glaube nicht, dass es alte ZipDateien sind, sondern die aktuelle, die gerade erstellt wird.
    Das würde auch erklären, warum das ZIP-Archiv im ZIP-Archiv nicht funktioniert.

    MFG

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

Ähnliche Themen

  1. Antworten: 12
    Letzter Beitrag: 13.04.10, 18:39
  2. Antworten: 5
    Letzter Beitrag: 22.02.10, 12:05
  3. Flash files in neues dokument kopieren?
    Von iGarfield im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 31.10.08, 01:30
  4. Array kopieren und neues Feld hinzufügen
    Von Morphinus21 im Forum Java
    Antworten: 8
    Letzter Beitrag: 23.01.08, 11:50
  5. Formularfelder aus Mail in neues Fenster kopieren
    Von Superpet im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 23.02.04, 17:15