mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-25 08:29:14 +08:00
cb1902adbf
1999-07-01 Warren Levy <warrenl@cygnus.com> * gnu/gcj/convert/BytesToUnicode.java (read): Changed outlength to count and revised comments to match. * gnu/gcj/convert/Input_EUCJIS.java (read): Same as Input_8859_1.java. * gnu/gcj/convert/Input_JavaSrc.java (read): ditto. * gnu/gcj/convert/Input_SJIS.java (read): ditto. * gnu/gcj/convert/Input_UTF8.java (read): ditto. * gnu/gcj/convert/natInput_EUCJIS.cc (read): ditto. * gnu/gcj/convert/natInput_SJIS.cc (read): ditto. 1999-07-01 John-Marc Chandonia <jmc@cmpharm.ucsf.edu> * gnu/gcj/convert/Input_8859_1.java (read): Use 3rd parameter properly as count rather than outlength. * java/io/BufferedOutputStream.java (write(byte[],int,int): Flush output on overflow rather than buffer fill. * java/io/BufferedReader.java (fill): Don't clear out the buffer if markPos is 0 and there is still room in the buffer. From-SVN: r27892
80 lines
1.8 KiB
Java
80 lines
1.8 KiB
Java
// 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
|
|
{
|
|
// Flush output on overflow though JDK (1.2) doc may infer to flush on fill.
|
|
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
|
|
{
|
|
// Flush output on overflow though JDK (1.2) doc may infer to flush on fill.
|
|
|
|
// 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;
|
|
}
|