BinaryReader.ReadChar Methode

Definitie

Leest het volgende teken uit de huidige stroom en gaat verder met de huidige positie van de stroom overeenkomstig het Encoding gebruikte en het specifieke teken dat uit de stroom wordt gelezen.

public:
 virtual char ReadChar();
public virtual char ReadChar();
abstract member ReadChar : unit -> char
override this.ReadChar : unit -> char
Public Overridable Function ReadChar () As Char

Retouren

Een teken dat uit de huidige stroom wordt gelezen.

Uitzonderingen

Het einde van de stream is bereikt.

De stream is gesloten.

Er is een I/O-fout opgetreden.

Er is een surrogaatteken gelezen.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u gegevens kunt lezen en schrijven met behulp van geheugen als back-uparchief.

using System;
using System.IO;

class BinaryRW
{
    static void Main()
    {
        int i = 0;
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        for(i = 0; i < invalidPathChars.Length; i++)
        {
            binWriter.Write(invalidPathChars[i]);
        }

        // Create the reader using the same MemoryStream
        // as used with the writer.
        BinaryReader binReader = new BinaryReader(memStream);

        // Set Position to the beginning of the stream.
        memStream.Position = 0;

        // Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString());
        char[] memoryData =
            new char[memStream.Length - memStream.Position];
        for(i = 0; i < memoryData.Length; i++)
        {
            memoryData[i] = binReader.ReadChar();
        }
        Console.WriteLine(memoryData);
    }
}
open System.IO

let invalidPathChars = Path.GetInvalidPathChars()
let memStream = new MemoryStream()
let binWriter = new BinaryWriter(memStream)

// Write to memory.
binWriter.Write "Invalid file path characters are: "
for i = 0 to invalidPathChars.Length - 1 do
    binWriter.Write invalidPathChars[i]

// Create the reader using the same MemoryStream
// as used with the writer.
let binReader = new BinaryReader(memStream)

// Set Position to the beginning of the stream.
memStream.Position <- 0

// Read the data from memory and write it to the console.
printf $"{binReader.ReadString()}"
let memoryData = Array.zeroCreate<char> (int (memStream.Length - memStream.Position))
for i = 0 to memoryData.Length - 1 do
    memoryData[i] <- binReader.ReadChar()
printfn $"{memoryData}"
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        Dim i As Integer = 0
        Dim invalidPathChars() As Char = Path.InvalidPathChars
        Dim memStream As new MemoryStream()
        Dim binWriter As New BinaryWriter(memStream)

        ' Write to memory.
        binWriter.Write("Invalid file path characters are: ")
        For i = 0 To invalidPathChars.Length - 1
            binWriter.Write(invalidPathChars(i))
        Next i

        ' Create the reader using the same MemoryStream 
        ' as used with the writer.
        Dim binReader As New BinaryReader(memStream)

        ' Set Position to the beginning of the stream.
        memStream.Position = 0

        ' Read the data from memory and write it to the console.
        Console.Write(binReader.ReadString())
        Dim memoryData( _
            CInt(memStream.Length - memStream.Position) - 1) As Char
        For i = 0 To memoryData.Length - 1
            memoryData(i) = binReader.ReadChar()
        Next i
        Console.WriteLine(memoryData)
    
    End Sub
End Class

Opmerkingen

Als de ReadChar methode probeert een surrogaatteken in de stream te lezen, wordt er een uitzondering gegenereerd en gaat de positie in de stream verder. De positie wordt hersteld naar de oorspronkelijke locatie voordat ReadChar deze werd aangeroepen als de stroom kan worden gezocht. Als de stroom echter niet kan worden gedetecteerd, wordt de positie niet gecorrigeerd. Als surrogaattekens in de stroom kunnen worden verwacht, gebruikt u in plaats daarvan de ReadChars methode.

Vanwege conflicten met gegevensopmaak wordt het gebruik van deze methode met de volgende coderingen niet aanbevolen:

  • UTF-7

  • ISO-2022-JP

  • ISCII

Zie Algemene I/O-taken voor een lijst met algemene I/O-taken.

Van toepassing op

Zie ook