BinaryReader.ReadChars(Int32) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Lee el número especificado de caracteres de la secuencia actual, devuelve los datos en una matriz de caracteres y hace avanzar la posición actual de acuerdo con la Encoding
usada y el carácter concreto que se lee en la secuencia.
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()
Parámetros
- count
- Int32
Número de caracteres que se va a leer.
Devoluciones
Matriz de caracteres que contiene los datos leídos de la secuencia subyacente. Podría ser inferior al número de caracteres solicitados si se alcanza el final de la secuencia.
Excepciones
El número de caracteres descodificados para leer es mayor que count
. Esto puede pasar si un descodificador de Unicode devuelve caracteres de reserva o un par suplente.
La secuencia está cerrada.
Error de E/S.
count
es negativo.
Ejemplos
En el ejemplo de código siguiente se muestra cómo leer y escribir datos mediante memoria como almacén de respaldo.
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
Comentarios
BinaryReader no restaura la posición del archivo después de una operación de lectura incorrecta.
Al leer desde secuencias de red, en algunos casos excepcionales, el ReadChars método podría leer un carácter adicional de la secuencia si BinaryReader se construyó con codificación Unicode. Si esto ocurre, puede usar el ReadBytes método para leer una matriz de bytes de longitud fija y, a continuación, pasar esa matriz al ReadChars método .