C# File.ReadAllBytes

Byte

File.ReadAllBytes returns a byte array. It is simple to call—it receives a filename and returns the file data. It can be combined with other types to create high performance file formats.

Byte Array

Example

Array type

This example shows the basic syntax for calling File.ReadAllBytes. The method returns a byte array, which will be stored in the large object heap if it is large. The array can of course be used as any other byte[] type.

Based on:

.NET 4.5

Program that uses File.ReadAllBytes method: C#

using System;
using System.IO;

class Program
{
    static void Main()
    {
	byte[] array = File.ReadAllBytes("C:\\a");
	Console.WriteLine("First byte: {0}", array[0]);
	Console.WriteLine("Last byte: {0}", array[array.Length - 1]);
	Console.WriteLine(array.Length);
    }
}

Output
    Depends on the file found.

First byte: 29
Last byte: 0
5407219

Internals

Framework: NET

ReadAllBytes is implemented in an obvious way. It uses the using-statement on a FileStream. Then it loops through the file and puts the bytes into an array. In .NET 4.0, it throws an exception if the file exceeds 2 gigabytes.

UsingException

Discussion

Stream abstract type

You can do some amazing things with File.ReadAllBytes. After using File.ReadAllBytes, you can use MemoryStream and BinaryReader to read in a binary file you had previously generated with BinaryWriter. This yields fast file formats.

MemoryStreamBinaryReaderBinaryWriterProgramming tip

File.ReadAllBytes can be used to reduce memory usage for a large data collection. If you have a binary file that contains thousands of sub-resources, you can load the whole file into memory with File.ReadAllBytes as a byte array.

Then:Use BinaryReader to index the contents of the file. Whenever a resource is required, just access the byte range from the byte array.

Note:This can collapse thousands of objects into a single object on the large object heap.

Object

Summary

ReadAllBytes loads a binary file into memory. It has a simple calling pattern and is implemented in a straightforward and efficient way. By combining it with other types, you can develop efficient in-memory database systems.


C#: File