8.2. Readers and Writers

Although reading and writing directly to a stream is possible, working with an array of bytes can be difficult if the data in question is composed of integers, longs, doubles, or other primitive data types—or objects, for that matter. Fortunately, there are classes available (in System.IO) whose sole purpose is to assist in reading and writing data to streams.

BinaryReader and BinaryWriter read and write primitive data types from a stream. There are also several readers and writers designed for character-based input and output, as opposed to "raw" bytes. These classes are derived from TextReader and TextWriter. Specifically, they are called StringReader/Writer and StreamReader/Writer.

8.2.1. BinaryReader and BinaryWriter

In Example 8-3, a file stream creates a stream to a file called data.bin. The stream instance constructs a BinaryWriter, which allows primitive data types to be written to the store.

Example 8-3. Using BinaryWriter
Imports System Imports System.IO Public Class StreamTest2 Public Sub New( ) Dim stream As New FileStream("data.bin", _ FileMode.Create, _ FileAccess.ReadWrite) Dim writer As New BinaryWriter(stream) Dim b As Byte = 1 Dim i As Integer = 2 Dim l As Long = 3 Dim d As Double = 3.1459 Dim s As String = "It's easy as ABC" writer.Write(b) writer.Write(i) writer.Write(l) writer.Write(d) writer.Write(s) writer.Close( ) Console.WriteLine("File written...") End Sub End Class Public Class Application Public Shared Sub Main( ) ...

Get Object-Oriented Programming with Visual Basic .NET 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.