Compartir a través de


BinaryReader Clase

Definición

Lee tipos de datos primitivos como valores binarios en una codificación específica.

public ref class BinaryReader : IDisposable
public class BinaryReader : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryReader : IDisposable
type BinaryReader = class
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryReader = class
    interface IDisposable
Public Class BinaryReader
Implements IDisposable
Herencia
BinaryReader
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra cómo almacenar y recuperar la configuración de la aplicación en un archivo.

using System;
using System.IO;
using System.Text;

class ConsoleApplication
{
    const string fileName = "AppSettings.dat";

    static void Main()
    {
        WriteDefaultValues();
        DisplayValues();
    }

    public static void WriteDefaultValues()
    {
        using (var stream = File.Open(fileName, FileMode.Create))
        {
            using (var writer = new BinaryWriter(stream, Encoding.UTF8, false))
            {
                writer.Write(1.250F);
                writer.Write(@"c:\Temp");
                writer.Write(10);
                writer.Write(true);
            }
        }
    }

    public static void DisplayValues()
    {
        float aspectRatio;
        string tempDirectory;
        int autoSaveTime;
        bool showStatusBar;

        if (File.Exists(fileName))
        {
            using (var stream = File.Open(fileName, FileMode.Open))
            {
                using (var reader = new BinaryReader(stream, Encoding.UTF8, false))
                {
                    aspectRatio = reader.ReadSingle();
                    tempDirectory = reader.ReadString();
                    autoSaveTime = reader.ReadInt32();
                    showStatusBar = reader.ReadBoolean();
                }
            }

            Console.WriteLine("Aspect ratio set to: " + aspectRatio);
            Console.WriteLine("Temp directory is: " + tempDirectory);
            Console.WriteLine("Auto save time set to: " + autoSaveTime);
            Console.WriteLine("Show status bar: " + showStatusBar);
        }
    }
}
open System.IO
open System.Text

let fileName = "AppSettings.dat"

let writeDefaultValues () =
    use stream = File.Open(fileName, FileMode.Create)
    use writer = new BinaryWriter(stream, Encoding.UTF8, false)
    writer.Write 1.250F
    writer.Write @"c:\Temp"
    writer.Write 10
    writer.Write true

let displayValues () =
    if File.Exists fileName then
        use stream = File.Open(fileName, FileMode.Open)
        use reader = new BinaryReader(stream, Encoding.UTF8, false)
        let aspectRatio = reader.ReadSingle()
        let tempDirectory = reader.ReadString()
        let autoSaveTime = reader.ReadInt32()
        let showStatusBar = reader.ReadBoolean()

        printfn $"Aspect ratio set to: {aspectRatio}"
        printfn $"Temp directory is: {tempDirectory}"
        printfn $"Auto save time set to: {autoSaveTime}"
        printfn $"Show status bar: {showStatusBar}"

writeDefaultValues ()
displayValues ()
Imports System.IO

Module Module1
    Const fileName As String = "AppSettings.dat"

    Sub Main()
        WriteDefaultValues()
        DisplayValues()
    End Sub

    Sub WriteDefaultValues()
        Using writer As BinaryWriter = New BinaryWriter(File.Open(fileName, FileMode.Create))
            writer.Write(1.25F)
            writer.Write("c:\Temp")
            writer.Write(10)
            writer.Write(True)
        End Using
    End Sub

    Sub DisplayValues()
        Dim aspectRatio As Single
        Dim tempDirectory As String
        Dim autoSaveTime As Integer
        Dim showStatusBar As Boolean

        If (File.Exists(fileName)) Then

            Using reader As BinaryReader = New BinaryReader(File.Open(fileName, FileMode.Open))
                aspectRatio = reader.ReadSingle()
                tempDirectory = reader.ReadString()
                autoSaveTime = reader.ReadInt32()
                showStatusBar = reader.ReadBoolean()
            End Using

            Console.WriteLine("Aspect ratio set to: " & aspectRatio)
            Console.WriteLine("Temp directory is: " & tempDirectory)
            Console.WriteLine("Auto save time set to: " & autoSaveTime)
            Console.WriteLine("Show status bar: " & showStatusBar)
        End If
    End Sub

End Module

Comentarios

La BinaryReader clase proporciona métodos que simplifican la lectura de tipos de datos primitivos de una secuencia. Por ejemplo, puede usar el ReadBoolean método para leer el siguiente byte como un valor booleano y avanzar la posición actual en la secuencia por un byte. La clase incluye métodos de lectura que admiten diferentes tipos de datos.

Cuando se crea una nueva instancia de la BinaryReader clase , se proporciona la secuencia desde la que se va a leer y, opcionalmente, se especifica el tipo de codificación y si se debe dejar abierta la secuencia después de eliminar el BinaryReader objeto. Si no especifica un tipo de codificación, se usa UTF-8.

Importante

Este tipo implementa la interfaz IDisposable. Cuando haya terminado de utilizar el tipo, debe desecharlo directa o indirectamente. Para eliminar el tipo directamente, llame a su método Dispose en un bloque try/catch. Para deshacerse de él indirectamente, use una construcción de lenguaje como using (en C#) o Using (en Visual Basic). Para más información, vea la sección "Uso de objetos que implementan IDisposable" en el tema de la interfaz IDisposable.

Constructores

BinaryReader(Stream)

Inicializa una nueva instancia de la clase BinaryReader basada en la secuencia especificada y usando codificación UTF-8.

BinaryReader(Stream, Encoding)

Inicializa una nueva instancia de la clase BinaryReader basada en la secuencia y codificación de caracteres especificadas.

BinaryReader(Stream, Encoding, Boolean)

Inicializa una nueva instancia de la clase BinaryReader basada en la secuencia y la codificación de caracteres especificadas y, opcionalmente, deja la secuencia abierta.

Propiedades

BaseStream

Expone el acceso a la secuencia subyacente de BinaryReader.

Métodos

Close()

Cierra el lector actual y la secuencia subyacente.

Dispose()

Libera todos los recursos usados por la instancia actual de la clase BinaryReader.

Dispose(Boolean)

Libera los recursos no administrados utilizados por la clase BinaryReader y, de forma opcional, libera los recursos administrados.

Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
FillBuffer(Int32)

Rellena el búfer interno con el número especificado de bytes leídos de la secuencia.

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
PeekChar()

Devuelve el siguiente carácter disponible y no hace avanzar la posición de bytes o caracteres.

Read()

Lee los caracteres de la secuencia subyacente y hace avanzar la posición actual de la secuencia de acuerdo con la Encoding usada y el carácter concreto que se lea de la secuencia.

Read(Byte[], Int32, Int32)

Lee el número especificado de bytes de la secuencia, a partir del punto especificado en la matriz de bytes.

Read(Char[], Int32, Int32)

Lee el número especificado de caracteres de la secuencia, a partir del punto especificado en la matriz de caracteres.

Read(Span<Byte>)

Lee una secuencia de bytes en el flujo actual y avanza la posición en el flujo según el número de bytes leídos.

Read(Span<Char>)

Lee, en la secuencia actual, el mismo número de caracteres que la longitud del búfer proporcionado, los escribe en el búfer proporcionado y hace avanzar la posición actual de acuerdo con el elemento Encoding usado y el carácter concreto que se lee en la secuencia.

Read7BitEncodedInt()

Lee un entero de 32 bits en formato comprimido.

Read7BitEncodedInt64()

Lee un número 7 bits a la vez.

ReadBoolean()

Lee un valor Boolean de la secuencia actual y hace avanzar un byte la posición actual de la secuencia.

ReadByte()

Lee el siguiente byte de la secuencia actual y hace avanzar un byte la posición actual de la secuencia.

ReadBytes(Int32)

Lee el número especificado de bytes de la secuencia actual en una matriz de bytes y hace avanzar la posición actual en función del número de bytes leídos.

ReadChar()

Lee el siguiente carácter de la secuencia actual y hace avanzar la posición actual de la secuencia de acuerdo con la Encoding usada y el carácter concreto que se lee de la secuencia.

ReadChars(Int32)

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.

ReadDecimal()

Lee un valor decimal de la secuencia actual y hace avanzar la posición actual de la secuencia dieciséis bytes.

ReadDouble()

Lee un valor de punto flotante de 8 bytes de la secuencia actual y hace avanzar la posición actual de la secuencia en ocho bytes.

ReadHalf()

Lee un valor de punto flotante de 2 bytes de la secuencia actual y avanza la posición actual de la secuencia en dos bytes.

ReadInt16()

Lee un entero con signo de 2 bytes en la secuencia actual y hace avanzar la posición actual de la secuencia en dos bytes.

ReadInt32()

Lee un entero con signo de 4 bytes en la secuencia actual y hace avanzar la posición actual de la secuencia en cuatro bytes.

ReadInt64()

Lee un entero con signo de 8 bytes de la secuencia actual y avanza la posición actual de la secuencia en ocho bytes.

ReadSByte()

Lee un byte con signo de esta secuencia y hace avanzar la posición actual de la secuencia en un byte.

ReadSingle()

Lee un valor de punto flotante de 4 bytes en la secuencia actual y hace avanzar la posición actual de la secuencia en cuatro bytes.

ReadString()

Lee una cadena de la secuencia actual. La cadena tiene como prefijo la longitud, codificada como un entero de siete bits cada vez.

ReadUInt16()

Lee un entero sin signo de 2 bytes de la secuencia actual con la codificación "little-endian" y hace avanzar la posición de la secuencia en dos bytes.

ReadUInt32()

Lee un entero sin signo de 4 bytes de la secuencia actual y hace avanzar la posición de la secuencia en cuatro bytes.

ReadUInt64()

Lee un entero sin signo de 8 bytes de la secuencia actual y hace avanzar la posición de la secuencia en ocho bytes.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Libera a BaseStream menos que se configure lo contrario mediante BinaryReader(Stream, Encoding, Boolean).

Se aplica a

Consulte también