01 /*
02 * Copyright 1996-1999 Sun Microsystems, Inc. All Rights Reserved.
03 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
04 *
05 * This code is free software; you can redistribute it and/or modify it
06 * under the terms of the GNU General Public License version 2 only, as
07 * published by the Free Software Foundation. Sun designates this
08 * particular file as subject to the "Classpath" exception as provided
09 * by Sun in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22 * CA 95054 USA or visit www.sun.com if you need additional information or
23 * have any questions.
24 */
25
26 package java.util.zip;
27
28 import java.io.FilterOutputStream;
29 import java.io.OutputStream;
30 import java.io.IOException;
31
32 /**
33 * An output stream that also maintains a checksum of the data being
34 * written. The checksum can then be used to verify the integrity of
35 * the output data.
36 *
37 * @see Checksum
38 * @version 1.25, 05/05/07
39 * @author David Connelly
40 */
41 public class CheckedOutputStream extends FilterOutputStream {
42 private Checksum cksum;
43
44 /**
45 * Creates an output stream with the specified Checksum.
46 * @param out the output stream
47 * @param cksum the checksum
48 */
49 public CheckedOutputStream(OutputStream out, Checksum cksum) {
50 super (out);
51 this .cksum = cksum;
52 }
53
54 /**
55 * Writes a byte. Will block until the byte is actually written.
56 * @param b the byte to be written
57 * @exception IOException if an I/O error has occurred
58 */
59 public void write(int b) throws IOException {
60 out.write(b);
61 cksum.update(b);
62 }
63
64 /**
65 * Writes an array of bytes. Will block until the bytes are
66 * actually written.
67 * @param b the data to be written
68 * @param off the start offset of the data
69 * @param len the number of bytes to be written
70 * @exception IOException if an I/O error has occurred
71 */
72 public void write(byte[] b, int off, int len) throws IOException {
73 out.write(b, off, len);
74 cksum.update(b, off, len);
75 }
76
77 /**
78 * Returns the Checksum for this output stream.
79 * @return the Checksum
80 */
81 public Checksum getChecksum() {
82 return cksum;
83 }
84 }
|