Memory Streams

To emphasize I/O is much more than just files, let’s start by using streams to look at in-memory data. The following code uses a byte array as an in-memory storage for data that gets surfaced through two memory streams. Each stream has an offset in the array and can be marked as read-only. In some sense, a stream acts as a “view” of the underlying raw data.

var bs = new byte[20];var ms1 = new MemoryStream(bs, index:  5, count: 10, writable: true);var ms2 = new MemoryStream(bs, index: 10, count: 10, writable: false);ms1.Seek(5, SeekOrigin.Begin);     //      @ relative =  5, absolute = 15ms1.Write(new byte[] { 9, 8, 7 }, 0, 3);Console.WriteLine(bs[10]);         // 0x09 @                absolute = 10 ...

Get C# 5.0 Unleashed now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.