code: package org.gridkit.jvmtool.bstub;
  
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.IOException;
  
  class StreamHelper {
  
      public static byte[] readFile(File file) {
          try {
              if (file.length() > 1 << 30) {
                  throw new ArrayIndexOutOfBoundsException("File is too big");
              }
              byte[] data = new byte[(int)file.length()];
              FileInputStream fis = new FileInputStream(file);
              try {
                  int n = 0;
                  while(n < data.length) {
                      int m = fis.read(data, n, data.length - n);
                      if (m < 0) {
                          throw new RuntimeException("Cannot read file: " + file.getCanonicalPath());
                      }
                      n += m;
                  }
              }
              finally {
                  try {
                      fis.close();
                  }
                  catch(IOException e) {
                      // ignore
                  }
              }
              return data;
          } catch (IOException e) {
              throw new RuntimeException(e);
          } 
      }
  }
  