This topic has not yet been rated - Rate this topic

BinaryWriter.Write Method (String)

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

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.

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)

public virtual void Write(
	string value
)

Parameters

value
Type: System.String
The value to write.
Exception Condition
IOException

An I/O error occurs.

ArgumentNullException

value is null.

ObjectDisposedException

The stream is closed.

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.


using System;
using System.IO;
using System.Text;

public class BinReadWrite
{
    public static void Main()
    {
        string testfile = @"C:\testfile.bin";

        // create a test file using BinaryWriter
        FileStream fs = File.Create(testfile);
        UTF8Encoding utf8 = new UTF8Encoding();

        BinaryWriter bw = new BinaryWriter(fs, utf8);
        string bstring;

        bstring  = "This is line #1 of text written as a binary stream.\r\n";
        bstring += "This is line #2 of text written as a binary stream.\r\n";
        bstring += "This is line #3 of text written as a binary stream.";
        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.
        int len = fs.ReadByte() & 0x7f;
        len += fs.ReadByte() * 0x80;
        // read the string as bytes of length = len
        byte[] rawbytes = new byte[len];
        fs.Read(rawbytes, 0, len);

        // display the string
        Console.WriteLine("Read from FileStream:   \n" + utf8.GetString(rawbytes));
        Console.WriteLine();

        // Now, read the string using BinaryReader

        // reset the stream position for reading again
        fs.Seek(0, SeekOrigin.Begin);

        BinaryReader br = new BinaryReader(fs, utf8);
        // ReadString will read the length prefix and return the string.
        bstring = br.ReadString();
        Console.WriteLine("Read from BinaryReader: \n" + bstring);
        fs.Close();
    }
}

//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.


.NET Framework

Supported in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Windows 8 Release Preview, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 SP2, Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Did you find this helpful?
(1500 characters remaining)