バイナリファイルの読み取りと書き込みのC#
バイナリファイルを読み書きするためのBinaryReaderとBinaryWriterクラス。
BinaryReaderクラス
ファイルからバイナリデータを読み取るためのBinaryReaderクラス。 そのコンストラクタのFileStreamオブジェクトに渡されたBinaryReaderのオブジェクトが作成されます。
次の表は、いくつかの一般的なBinaryReaderクラスのメソッドを示します:
序号 | 方法 & 描述 |
---|---|
1 | public override void Close() 关闭 BinaryReader 对象和基础流。 |
2 | public virtual int Read() 从基础流中读取字符,并把流的当前位置往前移。 |
3 | public virtual bool ReadBoolean() 从当前流中读取一个布尔值,并把流的当前位置往前移一个字节。 |
4 | public virtual byte ReadByte() 从当前流中读取下一个字节,并把流的当前位置往前移一个字节。 |
5 | public virtual byte[] ReadBytes(
int count
)
从当前流中读取指定数目的字节到一个字节数组中,并把流的当前位置往前移指定数目的字节。 |
6 | public virtual char ReadChar() 从当前流中读取下一个字节,并把流的当前位置按照所使用的编码和从流中读取的指定的字符往前移。 |
7 | public virtual char[] ReadChars(
int count
) 从当前流中读取指定数目的字节,在一个字符数组中返回数组,并把流的当前位置按照所使用的编码和从流中读取的指定的字符往前移。 |
8 | public virtual double ReadDouble() 从当前流中读取一个 8 字节浮点值,并把流的当前位置往前移八个字节。 |
9 | public virtual int ReadInt32() 从当前流中读取一个 4 字节有符号整数,并把流的当前位置往前移四个字节。 |
10 | public virtual string ReadString()
从当前流中读取一个字符串。字符串以长度作为前缀,同时编码为一个七位的整数。 |
完全なリストについては、Microsoft C#のドキュメントを参照してください。
BinaryWriterクラス
ファイルにバイナリデータを書き込むためのBinaryWriterクラス 。 そのコンストラクタのFileStreamオブジェクトに渡されたBinaryWriterオブジェクトが作成されます。
次の表は、いくつかの一般的なBinaryWriterクラスのメソッドを示します:
序号 | 方法 & 描述 |
---|---|
1 | public override void Close() 关闭 BinaryWriter 对象和基础流。 |
2 | public virtual void Flush() 清理当前编写器的所有缓冲区,使得所有缓冲数据写入基础设备。 |
3 | public virtual long Seek(
int offset,
SeekOrigin origin
)
设置当前流内的位置。 |
4 | public virtual void Write(
bool value
)
把一个单字节的布尔值写入到当前流中,0 表示 false,1 表示 true。 |
5 | public virtual void Write(
byte value
)
把一个无符号字节写入到当前流中,并把流的位置往前移一个字节。 |
6 | public virtual void Write(
byte[] buffer
)
把一个字节数组写入到基础流中。 |
7 | public virtual void Write(
char ch
)
把一个 Unicode 字符写入到当前流中,并把流的当前位置按照所使用的编码和要写入到流中的指定的字符往前移。 |
8 | public virtual void Write(
char[] chars
)
把一个字符数组写入到当前流中,并把流的当前位置按照所使用的编码和要写入到流中的指定的字符往前移。 |
9 | public virtual void Write(
double value
)
把一个 8 字节浮点值写入到当前流中,并把流位置往前移八个字节。 |
10 | public virtual void Write(
int value
)
把一个 4 字节有符号整数写入到当前流中,并把流位置往前移四个字节。 |
11 | public virtual void Write(
string value
)
把一个以长度为前缀的字符串写入到 BinaryWriter 的当前编码的流中,并把流的当前位置按照所使用的编码和要写入到流中的指定的字符往前移。 |
完全なリストについては、Microsoft C#のドキュメントを参照してください。
例
次の例では、バイナリデータを読み書き示しています。
システムを用いました。 System.IOを使用しました。 名前空間のBinaryFileApplication { クラスプログラム { 静的な無効メイン(文字列[] args) { 体重BinaryWriter。 BinaryReaderのBR。 私は25 = int型。 ダブルD = 3.14157; ブールB =はtrue。 文字列s = "私は幸せです」。 //しようとファイルを作成します。 { BW =新しいBinaryWriter(新しいFileStreamを( "MYDATA"、 FileMode.Create))。 } キャッチ(のIOException e)の { Console.WriteLineを(e.Message + "\ n個のファイルを作成できません。"); 返します。 } //ファイルを書き込むようにしてください { bw.Write(ⅰ); bw.Write(D)。 bw.Write(B) bw.Write(複数可)。 } キャッチ(のIOException e)の { Console.WriteLineを(e.Message + "\ nはファイルに書き込めません。"); 返します。 } bw.Close()。 //ファイルを読み込むようにしてください { BR =新しいBinaryReader(新しいFileStreamを( "MYDATA"、 FileMode.Open))。 } キャッチ(のIOException e)の { Console.WriteLineを(e.Message + "\ nがファイルを開くことができません。"); 返します。 } 試します { I = br.ReadInt32(); Console.WriteLineを( "整数データ:{0}"、i)は、 D = br.ReadDouble()。 Console.WriteLineを( "ダブルデータ:{0}"、d)前記 B = br.ReadBoolean(); Console.WriteLineを( "ブールデータ:{0}"、b)は、 S = br.ReadString()。 Console.WriteLineを( "文字列データ:{0}"、s)は、 } キャッチ(のIOException e)の { Console.WriteLineを(e.Message + "\ n個のファイルから読み込むことができません。"); 返します。 } br.Close()。 Console.ReadKey()。 } } }
上記のコードはコンパイルされ、実行されると、次の結果を生成します。
整数データ:25 ダブルデータ:3.14157 ブールデータ:真 Stringデータ:私は幸せです