Vb.net-binary-files

提供:Dev Guides
移動先:案内検索

VB.Net-バイナリファイル

*BinaryReader* および *BinaryWriter* クラスは、バイナリファイルの読み取りと書き込みに使用されます。

BinaryReaderクラス

*BinaryReader* クラスは、ファイルからバイナリデータを読み取るために使用されます。 *BinaryReader* オブジェクトは、 *FileStream* オブジェクトをコンストラクターに渡すことで作成されます。

次の表に、 BinaryReader クラスで一般的に使用される*メソッド*の一部を示します。

Sr.No. Method Name & Purpose
1

Public Overridable Sub Close

BinaryReaderオブジェクトと基になるストリームを閉じます。

2

Public Overridable Function Read As Integer

基になるストリームから文字を読み取り、ストリームの現在の位置を進めます。

3

Public Overridable Function ReadBoolean As Boolean

現在のストリームからブール値を読み取り、ストリームの現在の位置を1バイト進めます。

4

Public Overridable Function ReadByte As Byte

現在のストリームから次のバイトを読み取り、ストリームの現在の位置を1バイト進めます。

5

Public Overridable Function ReadBytes (count As Integer) As Byte()

現在のストリームから指定されたバイト数をバイト配列に読み込み、そのバイト数だけ現在の位置を進めます。

6

Public Overridable Function ReadChar As Char

現在のストリームから次の文字を読み取り、使用されているエンコーディングとストリームから読み取られている特定の文字に従って、ストリームの現在の位置を進めます。

7

Public Overridable Function ReadChars (count As Integer) As Char()

現在のストリームから指定された数の文字を読み取り、データを文字配列で返し、使用されているエンコーディングとストリームから読み取られている特定の文字に従って現在の位置を進めます。

8

Public Overridable Function ReadDouble As Double

現在のストリームから8バイトの浮動小数点値を読み取り、ストリームの現在の位置を8バイト進めます。

9

Public Overridable Function ReadInt32 As Integer

現在のストリームから4バイトの符号付き整数を読み取り、ストリームの現在の位置を4バイト進めます。

10

Public Overridable Function ReadString As String

現在のストリームから文字列を読み取ります。 文字列には長さが接頭辞として付けられ、一度に7ビットの整数としてエンコードされます。

BinaryWriterクラス

*BinaryWriter* クラスは、ストリームにバイナリデータを書き込むために使用されます。 BinaryWriterオブジェクトは、FileStreamオブジェクトをそのコンストラクターに渡すことによって作成されます。

次の表は、BinaryWriterクラスの一般的に使用されるメソッドの一部を示しています。

Sr.No. Function Name & Description
1

Public Overridable Sub Close

BinaryWriterオブジェクトと基になるストリームを閉じます。

2

Public Overridable Sub Flush

現在のライタのすべてのバッファをクリアし、バッファされたデータを基礎となるデバイスに書き込みます。

3

Public Overridable Function Seek (offset As Integer, origin As SeekOrigin ) As Long

現在のストリーム内の位置を設定します。

4

Public Overridable Sub Write (value As Boolean)

1バイトのブール値を現在のストリームに書き込みます。0はfalseを表し、1はtrueを表します。

5

Public Overridable Sub Write (value As Byte)

符号なしバイトを現在のストリームに書き込み、ストリームの位置を1バイト進めます。

6

Public Overridable Sub Write (buffer As Byte())

基になるストリームにバイト配列を書き込みます。

7

Public Overridable Sub Write (ch As Char )

現在のストリームにUnicode文字を書き込み、使用されているエンコーディングとストリームに書き込まれている特定の文字に従って、ストリームの現在の位置を進めます。

8

Public Overridable Sub Write (chars As Char())

文字配列を現在のストリームに書き込み、使用されているEncodingとストリームに書き込まれている特定の文字に従って、ストリームの現在位置を進めます。

9

Public Overridable Sub Write (value As Double )

8バイトの浮動小数点値を現在のストリームに書き込み、ストリームの位置を8バイト進めます。

10

Public Overridable Sub Write (value As Integer )

4バイトの符号付き整数を現在のストリームに書き込み、ストリームの位置を4バイト進めます。

11

Public Overridable Sub Write (value As String )

BinaryWriterの現在のエンコーディングでこのストリームに長さの接頭辞付き文字列を書き込み、使用されているエンコーディングとストリームに書き込まれている特定の文字に従ってストリームの現在の位置を進めます。

メソッドの完全なリストについては、Microsoftのドキュメントをご覧ください。

次の例は、バイナリデータの読み書きを示しています-

Imports System.IO
Module fileProg
   Sub Main()
      Dim bw As BinaryWriter
      Dim br As BinaryReader
      Dim i As Integer = 25
      Dim d As Double = 3.14157
      Dim b As Boolean = True
      Dim s As String = "I am happy"
      'create the file

      Try
         bw = New BinaryWriter(New FileStream("mydata", FileMode.Create))
      Catch e As IOException
         Console.WriteLine(e.Message + "\n Cannot create file.")
         Return
      End Try
      'writing into the file

      Try
         bw.Write(i)
         bw.Write(d)
         bw.Write(b)
         bw.Write(s)
      Catch e As IOException
         Console.WriteLine(e.Message + "\n Cannot write to file.")
         Return
      End Try
      bw.Close()
      'reading from the file

      Try
         br = New BinaryReader(New FileStream("mydata", FileMode.Open))
      Catch e As IOException
         Console.WriteLine(e.Message + "\n Cannot open file.")
         Return
      End Try

      Try
         i = br.ReadInt32()
         Console.WriteLine("Integer data: {0}", i)
         d = br.ReadDouble()
         Console.WriteLine("Double data: {0}", d)
         b = br.ReadBoolean()
         Console.WriteLine("Boolean data: {0}", b)
         s = br.ReadString()
         Console.WriteLine("String data: {0}", s)
      Catch e As IOException
         Console.WriteLine(e.Message + "\n Cannot read from file.")
         Return
      End Try
      br.Close()
      Console.ReadKey()
   End Sub
End Module

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Integer data: 25
Double data: 3.14157
Boolean data: True
String data: I am happy