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); } } }