2012-08-23 2 views
5

Ich habe ein Object alsJava Zip-Datei erstellt, aber nicht eröffnet, sagt unerwartetes Ende der Datei

private String name; 
private int age; 
private String country; 
// getters and setters 

und Funktionen sind

protected void write(@Nonnull final Document document, @Nonnull final OutputStream stream) throws PersistenceException { 
     try { 
      jaxbContext.createMarshaller().marshal(document, stream); 
     } catch (final JAXBException e) { 
      LOGGER.error(e.getMessage(), e); 
      throw new PersistenceException("Failed to marshall document " + docment.getUniqueId() + ": " + e.getMessage(), e); 
     } 
    } 

ich wandeln diese in zip Datei als

  ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      write(document, stream); 
      GZIPOutputStream gzipOutputStream = new GZIPOutputStream(new FileOutputStream(new File(getOutputFilePath(document.getUniqueId())))); 
      gzipOutputStream.write(stream.toByteArray()); 

Dies erstellt die Zip-Datei, aber wenn ich versuche, es zu öffnen, heißt es

gzip: document.xml.gz: unexpected end of file 

Was mache ich hier nicht?

+3

Haben Sie geöffnet gzip Ausgangsstrom der Nähe? – gkuzmin

+0

das war es, ich tat 'flush()' und 'close()' und es funktionierte, danke, dass ich darauf hinwies – daydreamer

Antwort

11

Sie müssen sicherstellen nennen:

gzipOutputStream.flush(); 

und schließlich

gzipOutputStream.close(); 
+0

Ich fügte hinzu, und es funktionierte danke @Jon – daydreamer