How to: Read and Write to a Newly Created Data File
The BinaryWriter and BinaryReader classes are used for writing and reading data, rather than character strings. The following code example demonstrates writing data to and reading data from a new, empty file stream (Test.data). After creating the data file in the current directory, the associated BinaryWriter and BinaryReader are created, and the BinaryWriter is used to write the integers 0 through 10 to Test.data, which leaves the file pointer at the end of the file. After setting the file pointer back to the origin, the BinaryReader reads out the specified content.
Example
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();
}
Robust Programming
If Test.data already exists in the current directory, an IOException is thrown. Use FileMode.Create to always create a new file without throwing an IOException.
See Also
Tasks
How to: Create a Directory Listing
How to: Open and Append to a Log File
How to: Read Characters from a String
How to: Write Characters to a String