d2e41c899e8d8db93d32ea99751ec5fe7747b474
[org.ibex.core.git] / src / org / xwt / util / InputStreamToByteArray.java
1 package org.xwt.util;
2 import java.io.*;
3
4 public class InputStreamToByteArray {
5
6     /** scratch space for isToByteArray() */
7     private static byte[] workspace = new byte[16 * 1024];
8
9     /** Trivial method to completely read an InputStream */
10     public static synchronized byte[] convert(InputStream is) throws IOException {
11         int pos = 0;
12         while (true) {
13             int numread = is.read(workspace, pos, workspace.length - pos);
14             if (numread == -1) break;
15             else if (pos + numread < workspace.length) pos += numread;
16             else {
17                 pos += numread;
18                 byte[] temp = new byte[workspace.length * 2];
19                 System.arraycopy(workspace, 0, temp, 0, workspace.length);
20                 workspace = temp;
21             }
22         }
23         byte[] ret = new byte[pos];
24         System.arraycopy(workspace, 0, ret, 0, pos);
25         return ret;
26     }
27
28 }