Mercurial > hg > blitz_condensed
comparison src/com/go/trove/io/FastBufferedOutputStream.java @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:3dc0c5604566 |
---|---|
1 /* | |
2 * @(#)BufferedOutputStream.java 1.27 00/02/02 | |
3 * | |
4 * Copyright 1994-2000 Sun Microsystems, Inc. All Rights Reserved. | |
5 * | |
6 * This software is the proprietary information of Sun Microsystems, Inc. | |
7 * Use is subject to license terms. | |
8 * | |
9 */ | |
10 | |
11 package com.go.trove.io; | |
12 | |
13 import java.io.*; | |
14 | |
15 /** | |
16 * FastBufferedOutputStream is just a slightly modified version of | |
17 * {@link java.io.BufferedOutputStream}. The synchronization is gone, and so | |
18 * writes are faster. Refer to the original BufferedOutputStream for | |
19 * documentation. | |
20 */ | |
21 /* | |
22 * @author Arthur van Hoff | |
23 * @version 1.27, 02/02/00 | |
24 * @since JDK1.0 | |
25 */ | |
26 public class FastBufferedOutputStream extends FilterOutputStream { | |
27 // These fields have been renamed and made private. In the original, they | |
28 // are protected. | |
29 private byte[] mBuffer; | |
30 private int mCount; | |
31 | |
32 public FastBufferedOutputStream(OutputStream out) { | |
33 this(out, 512); | |
34 } | |
35 | |
36 public FastBufferedOutputStream(OutputStream out, int size) { | |
37 super(out); | |
38 if (size <= 0) { | |
39 throw new IllegalArgumentException("Buffer size <= 0"); | |
40 } | |
41 mBuffer = new byte[size]; | |
42 } | |
43 | |
44 private void flushBuffer() throws IOException { | |
45 if (mCount > 0) { | |
46 out.write(mBuffer, 0, mCount); | |
47 mCount = 0; | |
48 } | |
49 } | |
50 | |
51 public void write(int b) throws IOException { | |
52 if (mCount >= mBuffer.length) { | |
53 flushBuffer(); | |
54 } | |
55 mBuffer[mCount++] = (byte)b; | |
56 } | |
57 | |
58 public void write(byte b[], int off, int len) throws IOException { | |
59 if (len >= mBuffer.length) { | |
60 flushBuffer(); | |
61 out.write(b, off, len); | |
62 return; | |
63 } | |
64 if (len > mBuffer.length - mCount) { | |
65 flushBuffer(); | |
66 } | |
67 System.arraycopy(b, off, mBuffer, mCount, len); | |
68 mCount += len; | |
69 } | |
70 | |
71 public synchronized void flush() throws IOException { | |
72 flushBuffer(); | |
73 out.flush(); | |
74 } | |
75 } |