I need to read a file into an array of Bytes.The entire file needs to be read into the array. The problem is I am getting an OutOfMemory Error since the file size is too large.
How about using a memory mapped file: FileChannel
From http://www.java-tips.org/java-se-tips/java.nio/how-to-create-a-memory-mapped-file-3.html:
try {
File file = new File("filename");
// Create a read-only memory-mapped file
FileChannel roChannel =
new RandomAccessFile(file, "r").getChannel();
ByteBuffer readonlybuffer =
roChannel.map(FileChannel.MapMode.READ_ONLY,
0, (int)roChannel.size());
// Create a read-write memory-mapped file
FileChannel rwChannel =
new RandomAccessFile(file, "rw").getChannel();
ByteBuffer writeonlybuffer=
rwChannel.map(FileChannel.MapMode.READ_WRITE,
0, (int)rwChannel.size());
// Create a private (copy-on-write) memory-mapped file.
// Any write to this channel results in a private
// copy of the data.
FileChannel pvChannel =
new RandomAccessFile(file, "rw").getChannel();
ByteBuffer privatebuffer =
roChannel.map(FileChannel.MapMode.READ_WRITE,
0, (int)rwChannel.size());
} catch (IOException e) {
}