BinaryReader.ReadChar Metod

Definition

Läser nästa tecken från den aktuella strömmen och avancerar strömmens aktuella position i enlighet med det Encoding använda och det specifika tecken som läse från strömmen.

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

Returer

Ett tecken som lästs från den aktuella strömmen.

Undantag

Strömmens slut nås.

Strömmen är stängd.

Ett I/O-fel uppstod.

En surrogatkaraktär lästes upp.

Exempel

Följande kodexempel visar hur du läser och skriver data med hjälp av minne som ett lagringsplats för säkerhetskopiering.

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

Kommentarer

ReadChar Om metoden försöker läsa ett surrogattecken i dataströmmen utlöses ett undantag och positionen i dataströmmen fortsätter. Positionen återställs till den ursprungliga platsen innan ReadChar anropades om strömmen kan sökas, men om strömmen inte går att se korrigeras inte positionen. Om surrogattecken kan förväntas i dataströmmen använder du ReadChars metoden i stället.

På grund av dataformateringskonflikter rekommenderas inte användning av den här metoden med följande kodningar:

  • UTF-7

  • ISO-2022-JP

  • ISCII

En lista över vanliga I/O-uppgifter finns i Vanliga I/O-uppgifter.

Gäller för

Se även