1
22
23 package com.liferay.portal.kernel.io.unsync;
24
25 import java.io.IOException;
26 import java.io.OutputStream;
27
28
37 public class UnsyncBufferedOutputStream extends UnsyncFilterOutputStream {
38
39 public UnsyncBufferedOutputStream(OutputStream outputStream) {
40 this(outputStream, _DEFAULT_BUFFER_SIZE);
41 }
42
43 public UnsyncBufferedOutputStream(OutputStream outputStream, int size) {
44 super(outputStream);
45
46 buffer = new byte[size];
47 }
48
49 public void flush() throws IOException {
50 if (count > 0) {
51 outputStream.write(buffer, 0, count);
52
53 count = 0;
54 }
55
56 outputStream.flush();
57 }
58
59 public void write(byte[] byteArray, int offset, int length)
60 throws IOException {
61
62 if (length >= buffer.length) {
63 if (count > 0) {
64 outputStream.write(buffer, 0, count);
65
66 count = 0;
67 }
68
69 outputStream.write(byteArray, offset, length);
70
71 return;
72 }
73
74 if (count > 0 && length > buffer.length - count) {
75 outputStream.write(buffer, 0, count);
76
77 count = 0;
78 }
79
80 System.arraycopy(byteArray, offset, buffer, count, length);
81
82 count += length;
83 }
84
85 public void write(byte[] byteArray) throws IOException {
86 write(byteArray, 0, byteArray.length);
87 }
88
89 public void write(int b) throws IOException {
90 if (count >= buffer.length) {
91 outputStream.write(buffer, 0, count);
92
93 count = 0;
94 }
95
96 buffer[count++] = (byte)b;
97 }
98
99 protected byte[] buffer;
100 protected int count;
101
102 private static int _DEFAULT_BUFFER_SIZE = 8192;
103
104 }