Cómo: Leer y escribir en un archivo de datos recién creado
Las clases BinaryWriter y BinaryReader se usan para escribir y leer datos, en lugar de cadenas de caracteres. En el siguiente ejemplo de código se muestra cómo se escriben y se leen datos en una nueva secuencia de archivos vacía (Test.data). Después de crear el archivo de datos en el directorio actual, se crean las clases BinaryWriter y BinaryReader asociadas, y BinaryWriter se usa para escribir los enteros de 0 a 10 en Test.data, que deja el puntero de archivo al final del archivo. Después de volver a establecer el puntero de archivo en el origen, BinaryReader lee el contenido especificado.
Ejemplo
Imports System
Imports System.IO
Class MyStream
Private Const FILE_NAME As String = "Test.data"
Public Shared Sub Main()
' Create the new, empty data file.
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)
' Create the writer for data.
Using w As New BinaryWriter(fs)
' Write data to Test.data.
For i As Integer = 0 To 10
w.Write(i)
Next
End Using
End Using
' Create the reader for data.
Using fs As New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)
Using r As New BinaryReader(fs)
' Read data from Test.data.
For i As Integer = 0 To 10
Console.WriteLine(r.ReadInt32())
Next
End Using
End Using
End Sub
End Class
using System;
using System.IO;
class MyStream
{
private const 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;
}
using (FileStream fs = new FileStream(FILE_NAME, FileMode.CreateNew))
{
// Create the writer for data.
using (BinaryWriter w = new BinaryWriter(fs))
{
// Write data to Test.data.
for (int i = 0; i < 11; i++)
{
w.Write(i);
}
}
}
// Create the reader for data.
using (FileStream fs = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read))
{
using (BinaryReader r = new BinaryReader(fs))
{
// Read data from Test.data.
for (int i = 0; i < 11; i++)
{
Console.WriteLine(r.ReadInt32());
}
}
}
}
}
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();
}
Programación eficaz
Si Test.data ya existe en el directorio actual, se inicia una IOException. Use FileMode.Create para crear siempre un archivo nuevo sin iniciar una excepción IOException.
Vea también
Tareas
Cómo: Crear una lista de directorios
Cómo: Abrir y anexar a un archivo de registro
Cómo: Leer texto de un archivo
Cómo: Escribir texto en un archivo
Cómo: Leer caracteres de una cadena
Cómo: Escribir caracteres en una cadena