Como ler e gravar em um arquivo de dados recém-criadoHow to: Read and Write to a Newly Created Data File

As classes BinaryWriter e System.IO.BinaryReader são usadas para gravar e ler dados em vez de cadeias de caracteres.The BinaryWriter and System.IO.BinaryReader classes are used for writing and reading data rather than character strings. O exemplo a seguir demonstra como gravar e ler dados de um fluxo de arquivo novo e vazio chamado Test.data.The following example demonstrates how to write data to, and read data from, a new, empty file stream called Test.data. Depois de criar o arquivo de dados no diretório atual, os objetos BinaryWriter e BinaryReader associados são criados e o objeto BinaryWriter é usado para gravar os inteiros de 0 a 10 para Test.data, que deixa o ponteiro de arquivo no final do arquivo.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. Depois de definir o ponteiro de arquivo de volta para a origem, o objeto BinaryReader lê o conteúdo especificado.After setting the file pointer back to the origin, the BinaryReader object reads out the specified content.

ExemploExample

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

Programação robustaRobust Programming

Se Test.data já existe no diretório atual, um exceção IOException será lançada.If Test.data already exists in the current directory, an IOException exception is thrown. Use a opção de modo de arquivo FileMode.Create quando você inicializar o fluxo de arquivos para sempre criar um novo arquivo sem lançar uma exceção.Use the file mode option FileMode.Create when you initialize the file stream to always create a new file without throwing an exception.

Consulte tambémSee Also

BinaryReader
BinaryWriter
FileStream
FileStream.Seek
SeekOrigin
Como enumerar diretórios e arquivosHow to: Enumerate Directories and Files
Como abrir e acrescentar a um arquivo de logHow to: Open and Append to a Log File
Como ler texto de um arquivoHow to: Read Text from a File
Como gravar texto em um arquivoHow to: Write Text to a File
Como ler caracteres de uma cadeia de caracteresHow to: Read Characters from a String
Como gravar caracteres em uma cadeia de caracteresHow to: Write Characters to a String
E/S de arquivo e de fluxoFile and Stream I-O