なんで ByteArrayOutputStream とか WritableByteChannel が現れるのかよくわからん。
ファイル全体を丸ごと読むだけなら、こうじゃない?

RandomAccessFile file = new RandomAccessFile("hogehoge", "r");
byte[] data = new byte[(int) file.length()];
ByteBuffer buffer = ByteBuffer.wrap(data);
while (buffer.hasRemaining()) {
file.getChannel().read(buffer);
}
file.close();