Freigeben über


BinaryReader.ReadChars(Int32) Methode

Definition

Liest die angegebene Anzahl von Zeichen aus dem aktuellen Datenstrom, gibt die Daten in einem Zeichenarray zurück und erhöht die aktuelle Position in Abhängigkeit von der verwendeten Encoding und dem aus dem Datenstrom gelesenen Zeichen.

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()

Parameter

count
Int32

Die Anzahl der zu lesenden Zeichen.

Gibt zurück

Char[]

Ein Zeichenarray mit Daten aus dem zugrunde liegenden Stream. Dies kann kleiner sein als die Anzahl der angeforderten Zeichen, wenn das Ende des Streams erreicht ist.

Ausnahmen

Die Anzahl der zu lesenden decodierten Zeichen ist größer als count. Dies kann geschehen, wenn ein Unicode-Decoder Fallbackzeichen oder ein Ersatzzeichenpaar zurückgibt.

Der Stream ist geschlossen.

E/A-Fehler

count ist ein negativer Wert.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Daten mithilfe von Arbeitsspeicher als Sicherungsspeicher gelesen und geschrieben werden.

using namespace System;
using namespace System::IO;
int main()
{
   array<Char>^invalidPathChars = Path::InvalidPathChars;
   MemoryStream^ memStream = gcnew MemoryStream;
   BinaryWriter^ binWriter = gcnew 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 = gcnew BinaryReader( memStream );
   
   // Set Position to the beginning of the stream.
   binReader->BaseStream->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) ) );
}
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

Hinweise

BinaryReader stellt die Dateiposition nach einem fehlgeschlagenen Lesevorgang nicht wieder her.

Beim Lesen aus Netzwerkdatenströmen liest die ReadChars Methode in einigen seltenen Fällen möglicherweise ein zusätzliches Zeichen aus dem Stream, wenn das BinaryReader mit Unicode-Codierung erstellt wurde. In diesem Fall können Sie die ReadBytes -Methode verwenden, um ein Bytearray mit fester Länge zu lesen und dieses Array dann an die ReadChars -Methode zu übergeben.

Gilt für:

Weitere Informationen