mirror of
https://github.com/corda/corda.git
synced 2025-06-13 04:38:19 +00:00
quick sketch of java/io/*
This commit is contained in:
51
classpath/java/io/BufferedOutputStream.java
Normal file
51
classpath/java/io/BufferedOutputStream.java
Normal file
@ -0,0 +1,51 @@
|
||||
package java.io;
|
||||
|
||||
public class BufferedOutputStream extends OutputStream {
|
||||
private final OutputStream out;
|
||||
private final byte[] buffer;
|
||||
private int position;
|
||||
|
||||
public BufferedOutputStream(OutputStream out, int size) {
|
||||
this.out = out;
|
||||
this.buffer = new byte[size];
|
||||
}
|
||||
|
||||
public BufferedOutputStream(OutputStream out) {
|
||||
this(out, 4096);
|
||||
}
|
||||
|
||||
private void drain() throws IOException {
|
||||
if (position > 0) {
|
||||
out.write(buffer, 0, position);
|
||||
position = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public void write(int c) throws IOException {
|
||||
if (position >= buffer.length) {
|
||||
drain();
|
||||
}
|
||||
|
||||
buffer[position++] = (byte) (c & 0xFF);
|
||||
}
|
||||
|
||||
public void write(byte[] b, int offset, int length) throws IOException {
|
||||
if (length > buffer.length - position) {
|
||||
drain();
|
||||
out.write(b, offset, length);
|
||||
} else {
|
||||
System.arraycopy(b, offset, buffer, position, length);
|
||||
position += length;
|
||||
}
|
||||
}
|
||||
|
||||
public void flush() throws IOException {
|
||||
drain();
|
||||
out.flush();
|
||||
}
|
||||
|
||||
public void close() throws IOException {
|
||||
flush();
|
||||
out.close();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user