Я предполагаю, что вы считаете, что должно быть достаточно памяти.Если это так, то я подозреваю, что размеры внутреннего буфера по умолчанию не дают результатов.Попробуйте явно указать размеры буфера при открытии файла, чтобы он не превышал фактическую длину файла:
string path = //some path
byte[] buffer;
int bufferSize = (int)new FileInfo(path).Length;
using (FileStream fs = new FileStream(
path, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize))
{
buffer = new byte[bufferSize];
fs.Read(buffer, 0, buffer.Length);
}
//do stuff with buffer