@Override public void save(Factory f, OutputStream out) throws IOException { if (f.getEnvironment().getCompressionType() == CompressionType.GZIP) { out = new GZIPOutputStream(out); } else if (f.getEnvironment().getCompressionType() == CompressionType.LZMA) { out = new LZMACompressorOutputStream(out); } else if (f.getEnvironment().getCompressionType() == CompressionType.BZIP2) { out = new BZip2CompressorOutputStream(out); } try (ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(out))) { oos.writeObject(f); oos.flush(); } }
/** * @param stream the stream to write to, should be buffered */ @Override public CompressorOutputStream getCompressorStream(OutputStream stream) throws IOException { return new LZMACompressorOutputStream(stream); } }