diff options
author | Tom Tromey <tromey@gcc.gnu.org> | 1999-04-07 14:42:40 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-04-07 14:42:40 +0000 |
commit | ee9dd3721be68b9fa63dea9aa5a1d86e66958cde (patch) | |
tree | d96801a16fdf03a5682ef98730fe333a46eef944 /libjava/java/io/BufferedOutputStream.java | |
parent | 140fa895c6b859f827fc4437b91775a82cd105fb (diff) | |
download | gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.zip gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.tar.gz gcc-ee9dd3721be68b9fa63dea9aa5a1d86e66958cde.tar.bz2 |
Initial revision
From-SVN: r26263
Diffstat (limited to 'libjava/java/io/BufferedOutputStream.java')
-rw-r--r-- | libjava/java/io/BufferedOutputStream.java | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/libjava/java/io/BufferedOutputStream.java b/libjava/java/io/BufferedOutputStream.java new file mode 100644 index 0000000..d37ed5d --- /dev/null +++ b/libjava/java/io/BufferedOutputStream.java @@ -0,0 +1,76 @@ +// BufferedOutputStream.java - A buffered stream + +/* Copyright (C) 1998, 1999 Cygnus Solutions + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +package java.io; + +/** + * @author Tom Tromey <tromey@cygnus.com> + * @date September 24, 1998 + */ + +/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 + * "The Java Language Specification", ISBN 0-201-63451-1 + * Status: Complete to version 1.1. + */ + +public class BufferedOutputStream extends FilterOutputStream +{ + public BufferedOutputStream (OutputStream ox) + { + this (ox, 512); + } + + public BufferedOutputStream (OutputStream ox, int size) + { + super (ox); + buf = new byte[size]; + } + + public synchronized void flush () throws IOException + { + out.write(buf, 0, count); + count = 0; + out.flush(); + } + + public synchronized void write (int b) throws IOException + { + if (count < buf.length) + buf[count++] = (byte) b; + else + { + out.write(buf, 0, count); + count = 0; + out.write(b); + } + } + + public synchronized void write (byte[] b, int off, int len) + throws IOException, NullPointerException, IndexOutOfBoundsException + { + // If LEN < 0 then the downstream write will fail for us. + if (len >= 0 && count + len < buf.length) + { + System.arraycopy(b, off, buf, count, len); + count += len; + } + else + { + out.write(buf, 0, count); + count = 0; + out.write(b, off, len); + } + } + + // The buffer. + protected byte[] buf; + // Number of valid bytes in BUF. + protected int count; +} |