Cómo: Leer y escribir en un archivo de datos recién creadoHow to: Read and Write to a Newly Created Data File

Las clases BinaryWriter y System.IO.BinaryReader se usan para escribir y leer datos, en lugar de cadenas de caracteres.The BinaryWriter and System.IO.BinaryReader classes are used for writing and reading data rather than character strings. En el ejemplo de código siguiente se muestra cómo se escriben y se leen datos de una nueva secuencia de archivos vacía denominada Test.data.The following example demonstrates how to write data to, and read data from, a new, empty file stream called Test.data. Después de crear el archivo de datos en el directorio actual, se crean los objetos BinaryWriter y BinaryReader asociados, y se usa el objeto BinaryWriter para escribir los enteros de 0 a 10 en Test.data, que deja el puntero de archivo al final del archivo.After creating the data file in the current directory, the associated BinaryWriter and BinaryReader objects are created, and the BinaryWriter object is used to write the integers 0 through 10 to Test.data, which leaves the file pointer at the end of the file. Después de volver a establecer el puntero de archivo en el origen, el objeto BinaryReader lee el contenido especificado.After setting the file pointer back to the origin, the BinaryReader object reads out the specified content.

EjemploExample

using namespace System;
using namespace System::IO;

ref class MyStream
{
private:
    static String^ FILE_NAME = "Test.data";

public:
    static void Main()
    {
        // Create the new, empty data file.
        if (File::Exists(FILE_NAME))
        {
            Console::WriteLine("{0} already exists!", FILE_NAME);
            return;
        }
        FileStream^ fs = gcnew FileStream(FILE_NAME, FileMode::CreateNew);
        // Create the writer for data.
        BinaryWriter^ w = gcnew BinaryWriter(fs);
        // Write data to Test.data.
        for (int i = 0; i < 11; i++)
        {
            w->Write(i);
        }
        w->Close();
        fs->Close();
        // Create the reader for data.
        fs = gcnew FileStream(FILE_NAME, FileMode::Open, FileAccess::Read);
        BinaryReader^ r = gcnew BinaryReader(fs);
        // Read data from Test.data.
        for (int i = 0; i < 11; i++)
        {
            Console::WriteLine(r->ReadInt32());
        }
        fs->Close();
    }
};

int main()
{
    MyStream::Main();
}
using System;
using System.IO;

class MyStream
{
    private const string FILE_NAME = "Test.data";

    public static void Main()
    {
        if (File.Exists(FILE_NAME))
        {
            Console.WriteLine("{0} already exists!", FILE_NAME);
            return;
        }

        using (FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew))
        {
            using (BinaryWriter w = new BinaryWriter(fs))
            {
                for (int i = 0; i < 11; i++)
                {
                    w.Write(i);
                }
            }
        }
        
        using (FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read))
        {
            using (BinaryReader r = new BinaryReader(fs))
            {
                for (int i = 0; i < 11; i++)
                {
                    Console.WriteLine(r.ReadInt32());
                }
            }
        }
    }
}
Imports System
Imports System.IO

Class MyStream
    Private Const FILE_NAME As String = "Test.data"

    Public Shared Sub Main()
        If File.Exists(FILE_NAME) Then
            Console.WriteLine("{0} already exists!", FILE_NAME)
            Return
        End If

        Using fs As New FileStream(FILE_NAME, FileMode.CreateNew)
            Using w As New BinaryWriter(fs)
                For i As Integer = 0 To 10
                    w.Write(i)
                Next
            End Using
        End Using

        Using fs As New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)
            Using r As New BinaryReader(fs)
                For i As Integer = 0 To 10
                    Console.WriteLine(r.ReadInt32())
                Next
            End Using
        End Using
    End Sub
End Class

Programación sólidaRobust Programming

Si Test.data ya existe en el directorio actual, se genera una excepción IOException.If Test.data already exists in the current directory, an IOException exception is thrown. Use la opción de modo de archivo FileMode.Create al inicializar la secuencia de archivo para crear siempre un archivo nuevo sin generar una excepción.Use the file mode option FileMode.Create when you initialize the file stream to always create a new file without throwing an exception.

Vea tambiénSee Also

BinaryReader
BinaryWriter
FileStream
FileStream.Seek
SeekOrigin
Enumerar directorios y archivosHow to: Enumerate Directories and Files
Cómo: Abrir y anexar a un archivo de registroHow to: Open and Append to a Log File
Cómo: Leer texto de un archivoHow to: Read Text from a File
Cómo: Escribir texto en un archivoHow to: Write Text to a File
Cómo: Leer caracteres de una cadenaHow to: Read Characters from a String
Cómo: Escribir caracteres en una cadenaHow to: Write Characters to a String
E/S de archivos y secuenciasFile and Stream I-O