From 7b402335811a465ee6e520f574e0e9a5cc048380 Mon Sep 17 00:00:00 2001 From: Doug Zongker Date: Thu, 11 Feb 2010 13:01:09 -0800 Subject: [PATCH] add NO_CLOSE flag for use by Base64OutputStream Change-Id: Ib2884e7b3853e4e4b2e329edf47c6f64c2f165a7 --- common/java/com/android/common/Base64.java | 7 +++++++ common/java/com/android/common/Base64OutputStream.java | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/common/java/com/android/common/Base64.java b/common/java/com/android/common/Base64.java index 772d567963f10..d65e24eaf4b6e 100644 --- a/common/java/com/android/common/Base64.java +++ b/common/java/com/android/common/Base64.java @@ -51,6 +51,13 @@ public class Base64 { */ public static final int WEB_SAFE = 8; + /** + * Flag to pass to Base64OutputStream to indicate that it should + * not close the output stream it is wrapping when it itself is + * closed. + */ + public static final int NO_CLOSE = 16; + // -------------------------------------------------------- // decoding // -------------------------------------------------------- diff --git a/common/java/com/android/common/Base64OutputStream.java b/common/java/com/android/common/Base64OutputStream.java index 7c37428c75267..76e1b6a787937 100644 --- a/common/java/com/android/common/Base64OutputStream.java +++ b/common/java/com/android/common/Base64OutputStream.java @@ -29,6 +29,7 @@ public class Base64OutputStream extends FilterOutputStream { private final boolean encode; private final Base64.EncoderState estate; private final Base64.DecoderState dstate; + private final int flags; private byte[] buffer = null; private int bpos = 0; @@ -59,6 +60,7 @@ public class Base64OutputStream extends FilterOutputStream { */ public Base64OutputStream(OutputStream out, int flags, boolean encode) { super(out); + this.flags = flags; this.encode = encode; if (encode) { estate = new Base64.EncoderState(flags, null); @@ -106,7 +108,11 @@ public class Base64OutputStream extends FilterOutputStream { public void close() throws IOException { flushBuffer(); internalWrite(EMPTY, 0, 0, true); - out.close(); + if ((flags & Base64.NO_CLOSE) == 0) { + out.close(); + } else { + out.flush(); + } } /**