< prev index next >
src/java.base/share/classes/java/util/zip/DeflaterOutputStream.java
Print this page
@@ -56,10 +56,12 @@
private boolean closed = false;
private final boolean syncFlush;
+ private ZipCryption zipCryption;
+
/**
* Creates a new output stream with the specified compressor,
* buffer size and flush mode.
* @param out the output stream
@@ -248,10 +250,15 @@
* @throws IOException if an I/O error has occurred
*/
protected void deflate() throws IOException {
int len = def.deflate(buf, 0, buf.length);
if (len > 0) {
+
+ if (zipCryption != null) {
+ zipCryption.encryptBytes(buf, 0, len);
+ }
+
out.write(buf, 0, len);
}
}
/**
@@ -272,13 +279,30 @@
public void flush() throws IOException {
if (syncFlush && !def.finished()) {
int len = 0;
while ((len = def.deflate(buf, 0, buf.length, Deflater.SYNC_FLUSH)) > 0)
{
+
+ if (zipCryption != null) {
+ zipCryption.encryptBytes(buf, 0, len);
+ }
+
out.write(buf, 0, len);
if (len < buf.length)
break;
}
}
out.flush();
}
+
+ /**
+ * Set ZIP encryption/decryption engine to this deflater.
+ *
+ * @param zipCryption ZIP encrypt/decrypt engine. zip encryption will not
+ * work if this value set to null.
+ * @since 1.9
+ */
+ public void setZipCryption(ZipCryption zipCryption) {
+ this.zipCryption = zipCryption;
+ }
+
}
< prev index next >