6

Object

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

と機能は

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);
        }
    }

zip私はこれを次のようにファイルに変換します

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

これでzipファイルが作成されますが、開こうとすると、

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

私がここでやっていないのは何ですか?

4

1 に答える 1

13

必ず電話する必要があります:

gzipOutputStream.flush();

そして最終的に

gzipOutputStream.close();
于 2012-08-23T21:37:19.673 に答える