1 32 package com.imagero.uio.io; 33 34 35 import com.imagero.uio.Sys; 36 37 import java.io.OutputStream ; 38 import java.util.Vector ; 39 40 48 public class MultiByteArrayOutputStream extends OutputStream { 49 50 Vector v; 51 int totalCount; 52 53 int sizeX = 1024; 54 55 protected byte buf[]; 56 57 protected int pos; 58 59 60 public MultiByteArrayOutputStream() { 61 this(1024); 62 } 63 64 public MultiByteArrayOutputStream(int sizeX) { 65 this.sizeX = sizeX; 66 this.v = new Vector (); 67 nextArray(); 68 } 69 70 protected void nextArray() { 71 byte[] b = new byte[this.sizeX]; 72 v.addElement(b); 73 this.buf = b; 74 this.pos = 0; 75 } 76 77 public synchronized void write(byte b[], int off, int len) { 78 for(int i = off; i < len; i++) { 79 write(b[off + i]); 80 } 81 } 82 83 public synchronized void write(int b) { 84 if(pos == sizeX) { 85 nextArray(); 86 } 87 totalCount++; 88 buf[pos++] = (byte) (b & 0xFF); 89 } 90 91 public static void printHex(int value) { 92 value = value & 0xFF; 93 String s = Integer.toHexString(value); 94 if(s.length() == 1) { 95 Sys.out.print("0"); 96 } 97 Sys.out.print(s); 98 Sys.out.print(" "); 99 } 100 101 public void reset() { 102 totalCount = 0; 103 v = new Vector (); 104 nextArray(); 105 } 106 107 public Vector getVector() { 108 109 int lastIndex = this.v.size() - 1; 110 byte[] b = (byte[]) this.v.elementAt(lastIndex); 111 byte[] b2 = new byte[pos]; 112 System.arraycopy(b, 0, b2, 0, pos); 113 this.v.setElementAt(b2, lastIndex); 114 115 return this.v; 116 } 117 118 public void flush() { 119 } 120 121 public void close() { 122 } 123 124 public int length() { 125 return (this.v.size() - 1) * this.sizeX + this.pos; 126 } 127 } 128 | Popular Tags |