BinaryReader.ReadChars(Int32) Metod

Definition

Läser det angivna antalet tecken från den aktuella strömmen, returnerar data i en teckenmatris och flyttar fram den aktuella positionen i enlighet med det Encoding använda och det specifika tecken som läse från strömmen.

public:
 virtual cli::array <char> ^ ReadChars(int count);
public virtual char[] ReadChars(int count);
abstract member ReadChars : int -> char[]
override this.ReadChars : int -> char[]
Public Overridable Function ReadChars (count As Integer) As Char()

Parametrar

count
Int32

Antalet tecken som ska läsas.

Returer

Char[]

En teckenmatris som innehåller data som lästs från den underliggande strömmen. Det kan vara mindre än antalet tecken som begärs om strömmens slut nås.

Undantag

Antalet avkodade tecken som ska läsas är större än count. Detta kan inträffa om en Unicode-avkodare returnerar reservtecken eller ett surrogatpar.

Strömmen är stängd.

Ett I/O-fel uppstod.

count är negativ.

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()
    {
        char[] invalidPathChars = Path.InvalidPathChars;
        MemoryStream memStream = new MemoryStream();
        BinaryWriter binWriter = new BinaryWriter(memStream);

        // Write to memory.
        binWriter.Write("Invalid file path characters are: ");
        binWriter.Write(Path.InvalidPathChars);

        // 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());
        Console.WriteLine(binReader.ReadChars(
            (int)(memStream.Length - memStream.Position)));
    }
}
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: "
binWriter.Write invalidPathChars

// 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()}"
printfn $"{binReader.ReadChars(int (memStream.Length - memStream.Position))}"
Imports System.IO

Public Class BinaryRW

    Shared Sub Main()
    
        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: ")
        binWriter.Write(Path.InvalidPathChars)

        ' 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())
        Console.WriteLine(binReader.ReadChars( _
            CInt(memStream.Length - memStream.Position)))
    
    End Sub
End Class

Kommentarer

BinaryReader återställer inte filpositionen efter en misslyckad läsåtgärd.

När du läser från nätverksströmmar kan metoden i vissa sällsynta fall ReadChars läsa ett extra tecken från strömmen om den BinaryReader skapades med Unicode-kodning. Om detta inträffar kan du använda ReadBytes metoden för att läsa en bytematris med fast längd och sedan skicka matrisen ReadChars till metoden.

Gäller för

Se även