BinaryWriter.Write Method (String)
Writes a length-prefixed string to this stream in the current encoding of the BinaryWriter, and advances the current position of the stream in accordance with the encoding used and the specific characters being written to the stream.
Assembly: mscorlib (in mscorlib.dll)
A length-prefixed string represents the string length by prefixing to the string a single byte or word that contains the length of that string. This method first writes the length of the string as a UTF-7 encoded unsigned integer, and then writes that many characters to the stream by using the BinaryWriter instance's current encoding.
For a list of common I/O tasks, see Common I/O Tasks.
This example demonstrates how Write adds the length prefix when it writes a string. The string data is first read as a sequence of raw bytes and its length is calculated. Next, a BinaryReader reads the string directly. The output from both string retrievals is displayed.
Imports System Imports System.IO Imports System.Text Public Class BinReadWrite Public Shared Sub Main() Dim testfile As String = "C:\testfile.bin" ' create a test file using BinaryWriter Dim fs As FileStream = File.Create(testfile) Dim utf8 As New UTF8Encoding() Dim bw As New BinaryWriter(fs, utf8) Dim bstring As String bstring = "This is line #1 of text written as a binary stream." + vbNewLine bstring = bstring + "This is line #2 of text written as a binary stream." + vbNewLine bstring = bstring + "This is line #3 of text written as a binary stream." + vbNewLine bw.Write(bstring) ' reset the stream position for reading fs.Seek(0, SeekOrigin.Begin) ' Read the string as raw bytes using FileStream... ' The first series of bytes is the UTF7 encoded length of the ' string. In this case, however, it is just the first two bytes. Dim len As Integer = fs.ReadByte() And 127 len = len + fs.ReadByte() * 128 ' read the string as bytes of length = len Dim rawbytes(len) As Byte fs.Read(rawbytes, 0, len) ' display the string Console.WriteLine("Read from FileStream: " + vbNewLine + utf8.GetString(rawbytes)) Console.WriteLine() ' Now, read the string using BinaryReader ' reset the stream position for reading again fs.Seek(0, SeekOrigin.Begin) Dim br As New BinaryReader(fs, utf8) ' ReadString will read the length prefix and return the string. bstring = br.ReadString() Console.WriteLine("Read from BinaryReader: "+ vbNewLine + bstring) fs.Close() End Sub End Class ' The output from the program is this: ' ' Read from FileStream: ' This is line #1 of text written as a binary stream. ' This is line #2 of text written as a binary stream. ' This is line #3 of text written as a binary stream. ' ' Read from BinaryReader: ' This is line #1 of text written as a binary stream. ' This is line #2 of text written as a binary stream. ' This is line #3 of text written as a binary stream.
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.