Condividi tramite


Procedura: leggere e scrivere su un file di dati appena creato

Le classi BinaryWriter e BinaryReader vengono utilizzate per scrivere e leggere dati, anziché stringhe di caratteri. Nell'esempio di codice che segue vengono illustrate la lettura e la scrittura di dati in un nuovo flusso di file vuoto (Test.data). Una volta creato il file di dati nella directory corrente, vengono creati i BinaryWriter e BinaryReader associati, quindi vengono scritti i numeri interi compresi tra 0 e 10 in Test.data utilizzando BinaryWriter, che lascia il puntatore del file alla fine del file. Una volta riportato il puntatore del file sull'origine, BinaryReader legge il contenuto specificato.

Esempio

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();
}

Programmazione efficiente

Se Test.data esiste già nella directory corrente, verrà generata un'eccezione IOException. Per creare un nuovo file senza mai generare una IOException, utilizzare FileMode.Create.

Vedere anche

Attività

Procedura: creare una visualizzazione directory

Procedura: aprire e accodare un file di log

Procedura: leggere testo da un file

Procedura: scrivere testo su un file

Procedura: leggere caratteri da una stringa

Procedura: scrivere caratteri in una stringa

Riferimenti

BinaryReader

BinaryWriter

FileStream

FileStream.Seek

SeekOrigin

Concetti

I/O di file di base