1 | NameSpace System |
---|
2 | NameSpace IO |
---|
3 | |
---|
4 | Class BinaryReader |
---|
5 | |
---|
6 | Public 'constructor |
---|
7 | /*! |
---|
8 | @date 2008/02/27 |
---|
9 | @auther NoWest |
---|
10 | @brief BinaryReaderクラスの新しいインスタンスを初期化します。 |
---|
11 | @param 対象となるストリーム |
---|
12 | */ |
---|
13 | Sub BinaryReader(input As Stream) |
---|
14 | stream = input |
---|
15 | coding = New System.Text.UTF8Encoding() |
---|
16 | End Sub |
---|
17 | /*! |
---|
18 | @date 2008/02/27 |
---|
19 | @auther NoWest |
---|
20 | @brief BinaryReaderクラスの新しいインスタンスを初期化します。 |
---|
21 | @param 対象となるストリーム |
---|
22 | @param 文字列操作時のエンコーディングを指定 |
---|
23 | */ |
---|
24 | Sub BinaryReader(input As Stream, encoding As System.Text.Encoding) |
---|
25 | This.stream = input |
---|
26 | This.coding = encoding |
---|
27 | End Sub |
---|
28 | |
---|
29 | Sub ~BinaryReader() |
---|
30 | This.Close() |
---|
31 | End Sub |
---|
32 | |
---|
33 | Public 'propaty |
---|
34 | /*! |
---|
35 | @date 2008/02/27 |
---|
36 | @auther NoWest |
---|
37 | @brief BinaryReader の基になるストリームへのアクセスを公開します。 |
---|
38 | @return 基となったストリーム |
---|
39 | */ |
---|
40 | Function BaseStream() As System.IO.Stream |
---|
41 | Return stream |
---|
42 | End Function |
---|
43 | |
---|
44 | Public 'method |
---|
45 | /*! |
---|
46 | @date 2008/02/27 |
---|
47 | @auther NoWest |
---|
48 | @brief 現在のBinaryReaderの基となったストリームをクローズします。 |
---|
49 | */ |
---|
50 | Virtual Sub Close() |
---|
51 | This.Dispose() |
---|
52 | End Sub |
---|
53 | |
---|
54 | /*! |
---|
55 | @date 2008/02/27 |
---|
56 | @auther NoWest |
---|
57 | @brief BinaryReaderクラスで使われたリソースを解放します。 |
---|
58 | */ |
---|
59 | Virtual Sub Dispose() |
---|
60 | This.Dispose(True) |
---|
61 | End Sub |
---|
62 | |
---|
63 | /*! |
---|
64 | @date 2008/02/27 |
---|
65 | @auther NoWest |
---|
66 | @brief 読み取り可能な次の文字を返します。バイトの位置または文字の位置は変化しません。 |
---|
67 | @return 読み取り可能な次の文字 |
---|
68 | */ |
---|
69 | Virtual Function PeekChar() As Long |
---|
70 | 'TODO |
---|
71 | End Function |
---|
72 | |
---|
73 | /*! |
---|
74 | @date 2008/02/27 |
---|
75 | @auther NoWest |
---|
76 | @brief 基になるストリームからエンコーディングに従って文字を読み取り、ストリームの現在位置を進めます。 |
---|
77 | @return 読み込んだ文字 |
---|
78 | */ |
---|
79 | Virtual Function Read() As Long |
---|
80 | End Function |
---|
81 | |
---|
82 | /*! |
---|
83 | @date 2008/02/27 |
---|
84 | @auther NoWest |
---|
85 | @brief 基になるストリームからデータを読み取り、ストリームの現在位置を進めます。 |
---|
86 | @param ストリームから読み込んだデータを格納するバッファ |
---|
87 | @param データを格納するバッファの読み取り開始位置 |
---|
88 | @param 読み込むデータサイズ |
---|
89 | @retval 実際に読み込んだデータのバイト数 |
---|
90 | @retval 0 ストリームの末尾に達している |
---|
91 | */ |
---|
92 | Virtual Function Read(buffer As *Byte, index As Long, count As Long) As Long |
---|
93 | Return This.stream.Read(buffer, index, count) |
---|
94 | End Function |
---|
95 | |
---|
96 | /*! |
---|
97 | @date 2008/02/27 |
---|
98 | @auther NoWest |
---|
99 | @brief 基になるストリームから指定されたエンコーディングに従って文字列を読み取り、ストリームの現在位置を進めます。 |
---|
100 | @param ストリームから読み込んだ文字列を格納する文字列バッファ |
---|
101 | @param データを格納する文字配列の読み取り開始位置 |
---|
102 | @param 読み込む文字の長さ |
---|
103 | @retval 実際に読み込んだ合計文字数 |
---|
104 | @retval 0 ストリームの末尾に達している |
---|
105 | */ |
---|
106 | Virtual Function Read(buffer As *Char, index As Long, count As Long) As Long |
---|
107 | Return This.stream.Read(buffer As *Byte, index, count) |
---|
108 | End Function |
---|
109 | |
---|
110 | /*! |
---|
111 | @date 2008/02/27 |
---|
112 | @auther NoWest |
---|
113 | @brief 現在のストリームから Boolean値を読み取り、ストリームの現在位置を 1 バイトだけ進めます。 |
---|
114 | @return 1byteのBoolean値 |
---|
115 | */ |
---|
116 | Virtual Function ReadBoolean() As Boolean |
---|
117 | Return This.stream.ReadByte() As Boolean |
---|
118 | End Function |
---|
119 | |
---|
120 | /*! |
---|
121 | @date 2008/02/27 |
---|
122 | @auther NoWest |
---|
123 | @brief 現在のストリームから次のバイトを読み取り、ストリームの現在位置を 1 バイトだけ進めます。 |
---|
124 | @return 符号無しの1バイト整数 |
---|
125 | */ |
---|
126 | Virtual Function ReadByte() As Byte |
---|
127 | Return This.stream.ReadByte() As Byte |
---|
128 | End Function |
---|
129 | |
---|
130 | '現在のストリームからバイト配列に count で指定したバイト数分のバイトを読み取り、count で指定したバイト数だけ現在位置を進めます。 |
---|
131 | /* Virtual Function ReadBytes() As Array<Byte> |
---|
132 | TODO: |
---|
133 | End Function*/ |
---|
134 | |
---|
135 | '現在のストリームの次の文字を読み取り、使用した Encoding とストリームから読み取った特定の文字に従ってストリームの現在位置を進めます。 |
---|
136 | /* Virtual Function ReadChar() As Char |
---|
137 | End Function*/ |
---|
138 | |
---|
139 | '現在のストリームから count で指定した文字数分の文字を読み取り、そのデータを文字配列として返します。使用した Encoding とストリームから読み取った特定の文字に従って現在位置を進めます。 |
---|
140 | /* Virtual Function ReadChars() As Array<Char> |
---|
141 | TODO: |
---|
142 | End Function*/ |
---|
143 | |
---|
144 | '現在のストリームから10進数値を読み取り、ストリームの現在位置を16バイトだけ進めます。 |
---|
145 | /* Virtual Function ReadDecimal() As ActiveBasic.COM.Decimal |
---|
146 | TODO: |
---|
147 | End Function*/ |
---|
148 | |
---|
149 | /*! |
---|
150 | @date 2008/02/27 |
---|
151 | @auther NoWest |
---|
152 | @brief 現在のストリームから8バイト浮動小数点値を読み取り、ストリームの現在位置を8バイトだけ進めます。 |
---|
153 | @return 8バイト浮動小数点値 |
---|
154 | */ |
---|
155 | Virtual Function ReadDouble() As Double |
---|
156 | Dim buffer As Double |
---|
157 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 8) |
---|
158 | Return buffer |
---|
159 | End Function |
---|
160 | |
---|
161 | /*! |
---|
162 | @date 2008/02/27 |
---|
163 | @auther NoWest |
---|
164 | @brief 現在のストリームから2バイト符号付き整数を読み取り、ストリームの現在位置を2バイトだけ進めます。 |
---|
165 | @return 2バイト符号付き整数値 |
---|
166 | */ |
---|
167 | Virtual Function ReadInt16() As Integer |
---|
168 | Dim buffer As Integer |
---|
169 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 2) |
---|
170 | Return buffer |
---|
171 | End Function |
---|
172 | |
---|
173 | /*! |
---|
174 | @date 2008/02/27 |
---|
175 | @auther NoWest |
---|
176 | @brief 現在のストリームから4バイト符号付き整数を読み取り、ストリームの現在位置を4バイトだけ進めます。 |
---|
177 | @return 4バイト符号付き整数値 |
---|
178 | */ |
---|
179 | Virtual Function ReadInt32() As Long |
---|
180 | Dim buffer As Long |
---|
181 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 4) |
---|
182 | Return buffer |
---|
183 | End Function |
---|
184 | |
---|
185 | /*! |
---|
186 | @date 2008/02/27 |
---|
187 | @auther NoWest |
---|
188 | @brief 現在のストリームから8バイト符号付き整数を読み取り、ストリームの現在位置を8バイトだけ進めます。 |
---|
189 | @return 8バイト符号付き整数値 |
---|
190 | */ |
---|
191 | Virtual Function ReadInt64() As Int64 |
---|
192 | Dim buffer As Int64 |
---|
193 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 8) |
---|
194 | Return buffer |
---|
195 | End Function |
---|
196 | |
---|
197 | /*! |
---|
198 | @date 2008/02/27 |
---|
199 | @auther NoWest |
---|
200 | @brief 現在のストリームから符号付きバイトを読み取り、ストリームの現在位置を1バイトだけ進めます。 |
---|
201 | @return 1バイト符号付き整数値 |
---|
202 | */ |
---|
203 | Virtual Function ReadSByte() As SByte |
---|
204 | Dim buffer As SByte |
---|
205 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 1) |
---|
206 | Return buffer |
---|
207 | End Function |
---|
208 | |
---|
209 | /*! |
---|
210 | @date 2008/02/27 |
---|
211 | @auther NoWest |
---|
212 | @brief 現在のストリームから4バイト浮動小数点値を読み取り、ストリームの現在位置を4バイトだけ進めます。 |
---|
213 | @return 4バイト浮動小数点値 |
---|
214 | */ |
---|
215 | Virtual Function ReadSingle() As Single |
---|
216 | Dim buffer As Single |
---|
217 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 4) |
---|
218 | Return buffer |
---|
219 | End Function |
---|
220 | |
---|
221 | /*! |
---|
222 | @date 2008/02/27 |
---|
223 | @auther NoWest |
---|
224 | @brief 現在のストリームから文字列を読み取ります。文字列の先頭に長さを付け、7ビットの整数としてまとめてエンコードします。 |
---|
225 | @return String値 |
---|
226 | */ |
---|
227 | Virtual Function ReadString() As String |
---|
228 | Return "" |
---|
229 | End Function |
---|
230 | |
---|
231 | /*! |
---|
232 | @date 2008/02/27 |
---|
233 | @auther NoWest |
---|
234 | @brief リトルエンディアンエンコーディングを使用して現在のストリームから2バイト符号なし整数を読み取り、ストリームの位置を2バイトだけ進めます。 |
---|
235 | @return 2バイト符号なし整数値 |
---|
236 | */ |
---|
237 | Virtual Function ReadUInt16() As Word |
---|
238 | Dim buffer As Word |
---|
239 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 2) |
---|
240 | Return buffer |
---|
241 | End Function |
---|
242 | |
---|
243 | /*! |
---|
244 | @date 2008/02/27 |
---|
245 | @auther NoWest |
---|
246 | @brief 現在のストリームから4バイト符号なし整数を読み取り、ストリームの位置を4バイトだけ進めます。 |
---|
247 | @return 4バイト符号なし整数値 |
---|
248 | */ |
---|
249 | Virtual Function ReadUInt32() As DWord |
---|
250 | Dim buffer As DWord |
---|
251 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 4) |
---|
252 | Return buffer |
---|
253 | End Function |
---|
254 | |
---|
255 | /*! |
---|
256 | @date 2008/02/27 |
---|
257 | @auther NoWest |
---|
258 | @brief 現在のストリームから8バイト符号なし整数を読み取り、ストリームの位置を8バイトだけ進めます。 |
---|
259 | @return 8バイト符号なし整数値 |
---|
260 | */ |
---|
261 | Virtual Function ReadUInt64() As QWord |
---|
262 | Dim buffer As QWord |
---|
263 | This.stream.Read(VarPtr(buffer) As *Byte, 0, 8) |
---|
264 | Return buffer |
---|
265 | End Function |
---|
266 | |
---|
267 | Protected 'method |
---|
268 | 'BinaryReader によって使用されているアンマネージ リソースを解放し、オプションでマネージリソースも解放します。 |
---|
269 | Virtual Sub Dispose(disposing As Boolean) |
---|
270 | This.stream.Close() |
---|
271 | End Sub |
---|
272 | |
---|
273 | '指定したバイト数分だけストリームから読み取ったバイトを内部バッファに格納します。 |
---|
274 | Virtual Sub FillBuffer(numBytes As Long) |
---|
275 | 'TODO: |
---|
276 | End Sub |
---|
277 | |
---|
278 | ' Read7BitEncodedInt 32 ビット整数を圧縮形式で読み取ります。 |
---|
279 | |
---|
280 | Private |
---|
281 | stream As Stream |
---|
282 | coding As System.Text.Encoding |
---|
283 | End Class |
---|
284 | |
---|
285 | End Namespace |
---|
286 | End Namespace |
---|