方法 : 新しく作成されたデータ ファイルに対して読み書きする
BinaryWriter クラスおよび BinaryReader クラスは、文字列ではない形式でデータを書き込んだり読み取ったりするために使用します。 新しい空のファイル ストリーム (Test.data) に対するデータの書き込みと読み取りを実行するコードの例を次に示します。 現在のディレクトリにデータ ファイルを作成した後、そのファイルに関連付けた BinaryWriter と BinaryReader を作成し、BinaryWriter を使用して整数 0 ~ 10 を Test.data に書き込みます。ファイル ポインターはファイルの末尾に残っています。 BinaryReader はファイル ポインターを起点に戻してから、指定された内容を読み出します。
使用例
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();
}
信頼性の高いプログラミング
Test.data が既に現在のディレクトリに存在する場合は、IOException がスローされます。 FileMode.Create を使用すると、IOException がスローされずに新しいファイルが必ず作成されます。