2 // System.IO.StringWriter
5 // Ville Palo (vi64pa@kolumbus.fi)
10 using NUnit
.Framework
;
15 namespace MonoTests
.System
.IO
{
18 public class BinaryWriterTest
{
19 sealed class MyBinaryWriter
: BinaryWriter
21 public MyBinaryWriter (Stream stream
)
25 public void WriteLeb128 (int value)
27 base.Write7BitEncodedInt (value);
31 string TempFolder
= Path
.Combine (Path
.GetTempPath (), "MonoTests.System.IO.Tests");
34 protected void SetUp() {
35 if (Directory
.Exists (TempFolder
))
36 Directory
.Delete (TempFolder
, true);
37 Directory
.CreateDirectory (TempFolder
);
41 public void TearDown()
43 if (Directory
.Exists (TempFolder
))
44 Directory
.Delete (TempFolder
, true);
50 MemoryStream stream
= new MemoryStream ();
51 BinaryWriter writer
= new BinaryWriter (stream
);
52 Assert
.AreEqual (true, writer
.BaseStream
.CanRead
, "test#01");
53 Assert
.AreEqual (true, writer
.BaseStream
.CanSeek
, "test#02");
54 Assert
.AreEqual (true, writer
.BaseStream
.CanWrite
, "test#03");
56 writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
57 Assert
.AreEqual (true, writer
.BaseStream
.CanRead
, "test#04");
58 Assert
.AreEqual (true, writer
.BaseStream
.CanSeek
, "test#05");
59 Assert
.AreEqual (true, writer
.BaseStream
.CanWrite
, "test#06");
64 /// Throws an exception if stream is null
67 [ExpectedException(typeof(ArgumentNullException
))]
68 public void CtorNullExceptionStream ()
70 BinaryWriter reader
= new BinaryWriter (null);
74 /// Throws an exception if encoding is null
77 [ExpectedException(typeof(ArgumentNullException
))]
78 public void CtorNullExceptionStreamEncoding ()
80 MemoryStream stream
= new MemoryStream ();
81 BinaryWriter reader
= new BinaryWriter (stream
, null);
85 /// Throws an exception if stream is closed
88 [ExpectedException(typeof(ArgumentException
))]
89 public void CtorExceptionStreamClosed ()
91 MemoryStream stream
= new MemoryStream ();
93 BinaryWriter writer
= new BinaryWriter (stream
);
97 /// Throws an exception if stream does not support writing
100 [ExpectedException(typeof(ArgumentException
))]
101 public void CtorArgumentExceptionStreamCannotWrite ()
103 string path
= TempFolder
+ "/BinaryWriterTest.1";
105 FileStream stream
= null;
106 BinaryWriter reader
= null;
109 stream
= new FileStream (path
, FileMode
.OpenOrCreate
, FileAccess
.Read
);
110 reader
= new BinaryWriter (stream
);
121 public void Encoding ()
123 MemoryStream stream
= new MemoryStream ();
124 BinaryWriter writer
= new BinaryWriter (stream
);
125 writer
.Write ("t*st");
127 byte [] bytes
= stream
.GetBuffer ();
128 Assert
.AreEqual (4, bytes
[0], "test#01");
129 Assert
.AreEqual (116, bytes
[1], "test#02");
130 Assert
.AreEqual (42, bytes
[2], "test#03");
131 Assert
.AreEqual (115, bytes
[3], "test#04");
132 Assert
.AreEqual (116, bytes
[4], "test#05");
133 Assert
.AreEqual (0, bytes
[5], "test#06");
135 stream
= new MemoryStream ();
136 writer
= new BinaryWriter (stream
, new UnicodeEncoding ());
137 writer
.Write ("t*st");
139 bytes
= stream
.GetBuffer ();
140 Assert
.AreEqual (8, bytes
[0], "test#07");
141 Assert
.AreEqual (116, bytes
[1], "test#08");
142 Assert
.AreEqual (0, bytes
[2], "test#09");
143 Assert
.AreEqual (42, bytes
[3], "test#10");
144 Assert
.AreEqual (0, bytes
[4], "test#11");
145 Assert
.AreEqual (115, bytes
[5], "test#12");
146 Assert
.AreEqual (0, bytes
[6], "test#13");
147 Assert
.AreEqual (116, bytes
[7], "test#14");
148 Assert
.AreEqual (0, bytes
[8], "test#15");
150 stream
= new MemoryStream ();
151 writer
= new BinaryWriter (stream
, new UTF7Encoding ());
152 writer
.Write ("t*st");
154 bytes
= stream
.GetBuffer ();
155 Assert
.AreEqual (8, bytes
[0], "test#16");
156 Assert
.AreEqual (116, bytes
[1], "test#17");
157 Assert
.AreEqual (43, bytes
[2], "test#18");
158 Assert
.AreEqual (65, bytes
[3], "test#19");
159 Assert
.AreEqual (67, bytes
[4], "test#21");
160 Assert
.AreEqual (111, bytes
[5], "test#22");
161 Assert
.AreEqual (45, bytes
[6], "test#23");
162 Assert
.AreEqual (115, bytes
[7], "test#24");
163 Assert
.AreEqual (116, bytes
[8], "test#25");
164 Assert
.AreEqual (0, bytes
[9], "test#26");
165 Assert
.AreEqual (0, bytes
[10], "test#27");
167 stream
= new MemoryStream ();
168 writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
169 writer
.Write ("t*st");
170 bytes
= stream
.GetBuffer ();
171 Assert
.AreEqual (4, bytes
[0], "test#28");
172 Assert
.AreEqual (116, bytes
[1], "test#29");
173 Assert
.AreEqual (42, bytes
[2], "test#30");
174 Assert
.AreEqual (115, bytes
[3], "test#31");
175 Assert
.AreEqual (116, bytes
[4], "test#32");
176 Assert
.AreEqual (0, bytes
[5], "test#33");
180 [ExpectedException(typeof(ObjectDisposedException
))]
181 public void Close1 ()
183 MemoryStream stream
= new MemoryStream ();
184 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
186 writer
.Write ("Test");
190 public void Close2 ()
192 MemoryStream stream
= new MemoryStream ();
193 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
200 [ExpectedException(typeof(ObjectDisposedException
))]
201 public void Close3 ()
203 MemoryStream stream
= new MemoryStream ();
204 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
206 writer
.Seek (1, SeekOrigin
.Begin
);
210 public void Close4 ()
212 MemoryStream stream
= new MemoryStream ();
213 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
215 Assert
.AreEqual (false, writer
.BaseStream
.CanRead
, "test#01");
216 Assert
.AreEqual (false, writer
.BaseStream
.CanWrite
, "test#01");
217 Assert
.AreEqual (false, writer
.BaseStream
.CanSeek
, "test#01");
223 MemoryStream stream
= new MemoryStream ();
224 BinaryWriter writer
= new BinaryWriter (stream
, new ASCIIEncoding ());
226 writer
.Write ("Test");
227 writer
.Seek (2, SeekOrigin
.Begin
);
229 writer
.Seek (400, SeekOrigin
.Begin
);
231 writer
.Seek (-394, SeekOrigin
.End
);
233 writer
.Seek (-2, SeekOrigin
.Current
);
236 byte [] bytes
= stream
.GetBuffer ();
237 Assert
.AreEqual (512, bytes
.Length
, "test#01");
238 Assert
.AreEqual (4, bytes
[0], "test#02");
239 Assert
.AreEqual (84, bytes
[1], "test#03");
240 Assert
.AreEqual (1, bytes
[2], "test#04");
241 Assert
.AreEqual (45, bytes
[3], "test#05");
242 Assert
.AreEqual (116, bytes
[4], "test#06");
243 Assert
.AreEqual (0, bytes
[5], "test#07");
244 Assert
.AreEqual (0, bytes
[6], "test#08");
245 Assert
.AreEqual (0, bytes
[7], "test#09");
246 Assert
.AreEqual (1, bytes
[8], "test#10");
247 Assert
.AreEqual (45, bytes
[9], "test#11");
248 Assert
.AreEqual (0, bytes
[10], "test#12");
249 Assert
.AreEqual (0, bytes
[11], "test#13");
250 Assert
.AreEqual (0, bytes
[12], "test#14");
251 Assert
.AreEqual (1, bytes
[400], "test#15");
255 [ExpectedException(typeof(IOException
))]
256 public void SeekException ()
258 MemoryStream stream
= new MemoryStream ();
259 BinaryWriter writer
= new BinaryWriter (stream
);
261 writer
.Write ("Test");
262 writer
.Seek (-12, SeekOrigin
.Begin
);
266 public void WriteCharArray ()
268 MemoryStream stream
= new MemoryStream ();
269 BinaryWriter writer
= new BinaryWriter (stream
);
271 writer
.Write (new char [] {'m', 'o', 'n', 'o', ':', ':'}
);
272 writer
.Write (new char [] {':', ':', 'O', 'N', 'O', 'M'}
);
274 byte [] bytes
= stream
.GetBuffer ();
276 Assert
.AreEqual (256, bytes
.Length
, "test#01");
277 Assert
.AreEqual (109, bytes
[0], "test#02");
278 Assert
.AreEqual (111, bytes
[1], "test#03");
279 Assert
.AreEqual (110, bytes
[2], "test#04");
280 Assert
.AreEqual (111, bytes
[3], "test#05");
281 Assert
.AreEqual (58, bytes
[4], "test#06");
282 Assert
.AreEqual (58, bytes
[5], "test#07");
283 Assert
.AreEqual (58, bytes
[6], "test#08");
284 Assert
.AreEqual (58, bytes
[7], "test#09");
285 Assert
.AreEqual (79, bytes
[8], "test#10");
286 Assert
.AreEqual (78, bytes
[9], "test#11");
287 Assert
.AreEqual (79, bytes
[10], "test#12");
288 Assert
.AreEqual (77, bytes
[11], "test#13");
289 Assert
.AreEqual (0, bytes
[12], "test#14");
290 Assert
.AreEqual (0, bytes
[13], "test#15");
294 public void WriteByteArray ()
296 MemoryStream stream
= new MemoryStream ();
297 BinaryWriter writer
= new BinaryWriter (stream
);
299 writer
.Write (new byte [] {1, 2, 3, 4, 5, 6}
);
300 writer
.Write (new byte [] {6, 5, 4, 3, 2, 1}
);
302 byte [] bytes
= stream
.GetBuffer ();
303 Assert
.AreEqual (256, bytes
.Length
, "test#01");
304 Assert
.AreEqual (1, bytes
[0], "test#02");
305 Assert
.AreEqual (2, bytes
[1], "test#03");
306 Assert
.AreEqual (3, bytes
[2], "test#04");
307 Assert
.AreEqual (4, bytes
[3], "test#05");
308 Assert
.AreEqual (5, bytes
[4], "test#06");
309 Assert
.AreEqual (6, bytes
[5], "test#07");
310 Assert
.AreEqual (6, bytes
[6], "test#08");
311 Assert
.AreEqual (5, bytes
[7], "test#09");
312 Assert
.AreEqual (4, bytes
[8], "test#10");
313 Assert
.AreEqual (3, bytes
[9], "test#11");
314 Assert
.AreEqual (2, bytes
[10], "test#12");
315 Assert
.AreEqual (1, bytes
[11], "test#13");
316 Assert
.AreEqual (0, bytes
[12], "test#14");
317 Assert
.AreEqual (0, bytes
[13], "test#15");
322 public void WriteInt ()
326 long l
= 9999999999999;
328 MemoryStream stream
= new MemoryStream ();
329 BinaryWriter writer
= new BinaryWriter (stream
);
332 bytes
= stream
.GetBuffer ();
333 Assert
.AreEqual (256, bytes
.Length
, "test#01");
334 Assert
.AreEqual (64, bytes
[0], "test#02");
335 Assert
.AreEqual (0, bytes
[1], "test#03");
338 bytes
= stream
.GetBuffer ();
339 Assert
.AreEqual (256, bytes
.Length
, "test#04");
340 Assert
.AreEqual (64, bytes
[0], "test#05");
341 Assert
.AreEqual (0, bytes
[1], "test#06");
342 Assert
.AreEqual (64, bytes
[2], "test#07");
343 Assert
.AreEqual (109, bytes
[3], "test#08");
344 Assert
.AreEqual (218, bytes
[4], "test#09");
345 Assert
.AreEqual (3, bytes
[5], "test#10");
346 Assert
.AreEqual (0, bytes
[6], "test#11");
349 bytes
= stream
.GetBuffer ();
350 Assert
.AreEqual (256, bytes
.Length
, "test#12");
351 Assert
.AreEqual (255, bytes
[6], "test#13");
352 Assert
.AreEqual (159, bytes
[7], "test#14");
353 Assert
.AreEqual (114, bytes
[8], "test#15");
354 Assert
.AreEqual (78, bytes
[9], "test#16");
355 Assert
.AreEqual (24, bytes
[10], "test#17");
356 Assert
.AreEqual (9, bytes
[11], "test#18");
357 Assert
.AreEqual (0, bytes
[12], "test#19");
361 public void WriteDecimal ()
363 MemoryStream stream
= new MemoryStream ();
364 BinaryWriter writer
= new BinaryWriter (stream
);
366 decimal d1
= 19932143214312.32M
;
367 decimal d2
= -8995034512332157M
;
371 byte [] bytes
= stream
.GetBuffer ();
373 Assert
.AreEqual (256, bytes
.Length
, "test#01");
374 Assert
.AreEqual (192, bytes
[0], "test#02");
375 Assert
.AreEqual (18, bytes
[1], "test#03");
376 Assert
.AreEqual (151, bytes
[2], "test#04");
377 Assert
.AreEqual (95, bytes
[3], "test#05");
378 Assert
.AreEqual (209, bytes
[4], "test#06");
379 Assert
.AreEqual (20, bytes
[5], "test#07");
380 Assert
.AreEqual (7, bytes
[6], "test#08");
381 Assert
.AreEqual (0, bytes
[7], "test#09");
382 Assert
.AreEqual (0, bytes
[8], "test#10");
383 Assert
.AreEqual (0, bytes
[9], "test#11");
384 Assert
.AreEqual (0, bytes
[10], "test#12");
385 Assert
.AreEqual (0, bytes
[11], "test#13");
386 Assert
.AreEqual (0, bytes
[12], "test#14");
387 Assert
.AreEqual (0, bytes
[13], "test#15");
388 Assert
.AreEqual (2, bytes
[14], "test#16");
389 Assert
.AreEqual (0, bytes
[15], "test#17");
390 Assert
.AreEqual (125, bytes
[16], "test#18");
391 Assert
.AreEqual (149, bytes
[17], "test#19");
392 Assert
.AreEqual (217, bytes
[18], "test#20");
393 Assert
.AreEqual (172, bytes
[19], "test#21");
394 Assert
.AreEqual (239, bytes
[20], "test#22");
395 Assert
.AreEqual (244, bytes
[21], "test#23");
396 Assert
.AreEqual (31, bytes
[22], "test#24");
397 Assert
.AreEqual (0, bytes
[23], "test#25");
398 Assert
.AreEqual (0, bytes
[24], "test#26");
399 Assert
.AreEqual (0, bytes
[25], "test#27");
400 Assert
.AreEqual (0, bytes
[26], "test#28");
401 Assert
.AreEqual (0, bytes
[27], "test#29");
402 Assert
.AreEqual (0, bytes
[28], "test#30");
403 Assert
.AreEqual (0, bytes
[29], "test#31");
404 Assert
.AreEqual (0, bytes
[30], "test#32");
405 Assert
.AreEqual (128, bytes
[31], "test#33");
406 Assert
.AreEqual (0, bytes
[32], "test#34");
407 Assert
.AreEqual (0, bytes
[33], "test#35");
408 Assert
.AreEqual (0, bytes
[34], "test#36");
409 Assert
.AreEqual (0, bytes
[35], "test#37");
410 Assert
.AreEqual (0, bytes
[36], "test#38");
411 Assert
.AreEqual (0, bytes
[37], "test#39");
412 Assert
.AreEqual (0, bytes
[38], "test#40");
413 Assert
.AreEqual (0, bytes
[39], "test#41");
414 Assert
.AreEqual (0, bytes
[40], "test#42");
415 Assert
.AreEqual (0, bytes
[41], "test#43");
416 Assert
.AreEqual (0, bytes
[42], "test#44");
417 Assert
.AreEqual (0, bytes
[43], "test#45");
418 Assert
.AreEqual (0, bytes
[44], "test#46");
419 Assert
.AreEqual (0, bytes
[45], "test#47");
420 Assert
.AreEqual (0, bytes
[46], "test#48");
424 public void WriteDecimalAndReadBack()
426 // This value is the same used in BinaryReader.ReadDecimal, which will be
427 // problematic if BinaryWriter or BinaryReader are endianness-confused.
428 Decimal writeDec
= -18295873486192640;
429 using (var ms
= new MemoryStream(32)) {
430 using (var bw
= new BinaryWriter(ms
, new UTF8Encoding(), true)) {
434 using (var br
= new BinaryReader(ms
)) {
435 Decimal readDec
= br
.ReadDecimal();
436 Assert
.AreEqual (readDec
, writeDec
, "test#01");
442 public void WriteFloat ()
444 MemoryStream stream
= new MemoryStream ();
445 BinaryWriter writer
= new BinaryWriter (stream
);
446 float f1
= 1.543E+10F
;
447 float f2
= -9.6534E-6f
;
451 byte [] bytes
= stream
.GetBuffer ();
452 Assert
.AreEqual (256, bytes
.Length
, "test#01");
453 Assert
.AreEqual (199, bytes
[0], "test#02");
454 Assert
.AreEqual (236, bytes
[1], "test#03");
455 Assert
.AreEqual (101, bytes
[2], "test#04");
456 Assert
.AreEqual (80, bytes
[3], "test#05");
457 Assert
.AreEqual (10, bytes
[4], "test#06");
458 Assert
.AreEqual (245, bytes
[5], "test#07");
459 Assert
.AreEqual (33, bytes
[6], "test#08");
460 Assert
.AreEqual (183, bytes
[7], "test#09");
461 Assert
.AreEqual (0, bytes
[8], "test#10");
462 Assert
.AreEqual (0, bytes
[9], "test#11");
466 public void WriteDouble ()
468 MemoryStream stream
= new MemoryStream ();
469 BinaryWriter writer
= new BinaryWriter (stream
);
470 double d1
= 1.543E+100;
471 double d2
= -9.6534E-129;
475 byte [] bytes
= stream
.GetBuffer ();
476 Assert
.AreEqual (256, bytes
.Length
, "test#01");
477 Assert
.AreEqual (49, bytes
[0], "test#02");
478 Assert
.AreEqual (69, bytes
[1], "test#03");
479 Assert
.AreEqual (15, bytes
[2], "test#04");
480 Assert
.AreEqual (157, bytes
[3], "test#05");
481 Assert
.AreEqual (211, bytes
[4], "test#06");
482 Assert
.AreEqual (55, bytes
[5], "test#07");
483 Assert
.AreEqual (188, bytes
[6], "test#08");
484 Assert
.AreEqual (84, bytes
[7], "test#09");
485 Assert
.AreEqual (76, bytes
[8], "test#10");
486 Assert
.AreEqual (59, bytes
[9], "test#11");
487 Assert
.AreEqual (59, bytes
[10], "test#12");
488 Assert
.AreEqual (60, bytes
[11], "test#13");
489 Assert
.AreEqual (4, bytes
[12], "test#14");
490 Assert
.AreEqual (196, bytes
[13], "test#15");
491 Assert
.AreEqual (90, bytes
[14], "test#16");
492 Assert
.AreEqual (165, bytes
[15], "test#17");
493 Assert
.AreEqual (0, bytes
[16], "test#18");
497 public void WriteByteAndChar ()
503 MemoryStream stream
= new MemoryStream ();
504 BinaryWriter writer
= new BinaryWriter (stream
);
510 byte [] bytes
= stream
.GetBuffer ();
511 Assert
.AreEqual (256, bytes
.Length
, "test#01");
512 Assert
.AreEqual (12, bytes
[0], "test#02");
513 Assert
.AreEqual (45, bytes
[1], "test#03");
514 Assert
.AreEqual (64, bytes
[2], "test#04");
515 Assert
.AreEqual (77, bytes
[3], "test#05");
516 Assert
.AreEqual (0, bytes
[4], "test#06");
520 public void WriteString ()
522 MemoryStream stream
= new MemoryStream ();
523 BinaryWriter writer
= new BinaryWriter (stream
);
529 byte [] bytes
= stream
.GetBuffer ();
530 Assert
.AreEqual (256, bytes
.Length
, "test#01");
531 Assert
.AreEqual (3, bytes
[0], "test#02");
532 Assert
.AreEqual (97, bytes
[1], "test#03");
533 Assert
.AreEqual (98, bytes
[2], "test#04");
534 Assert
.AreEqual (99, bytes
[3], "test#05");
535 Assert
.AreEqual (4, bytes
[4], "test#06");
536 Assert
.AreEqual (68, bytes
[5], "test#07");
537 Assert
.AreEqual (101, bytes
[6], "test#08");
538 Assert
.AreEqual (70, bytes
[7], "test#09");
539 Assert
.AreEqual (10, bytes
[8], "test#10");
540 Assert
.AreEqual (0, bytes
[9], "test#11");
544 public void Write7BitEncodedIntTest ()
546 MemoryStream stream
= new MemoryStream ();
547 var writer
= new MyBinaryWriter (stream
);
548 writer
.WriteLeb128 (5);
550 Assert
.AreEqual (new byte[] { 5 }
, stream
.ToArray (), "#1");
552 stream
= new MemoryStream ();
553 writer
= new MyBinaryWriter (stream
);
554 writer
.WriteLeb128 (int.MaxValue
);
556 Assert
.AreEqual (new byte[] { 255, 255, 255, 255, 7 }
, stream
.ToArray (), "#2");
558 stream
= new MemoryStream ();
559 writer
= new MyBinaryWriter (stream
);
560 writer
.WriteLeb128 (128);
562 Assert
.AreEqual (new byte[] { 128, 1 }
, stream
.ToArray (), "#3");
564 stream
= new MemoryStream ();
565 writer
= new MyBinaryWriter (stream
);
566 writer
.WriteLeb128 (-1025);
568 Assert
.AreEqual (new byte[] { 255, 247, 255, 255, 15 }
, stream
.ToArray (), "#4");
570 stream
= new MemoryStream ();
571 writer
= new MyBinaryWriter (stream
);
572 writer
.WriteLeb128 (int.MinValue
);
574 Assert
.AreEqual (new byte[] { 128, 128, 128, 128, 8 }
, stream
.ToArray (), "#5");
576 stream
= new MemoryStream ();
577 writer
= new MyBinaryWriter (stream
);
578 writer
.WriteLeb128 (-1);
580 Assert
.AreEqual (new byte[] { 255, 255, 255, 255, 15 }
, stream
.ToArray (), "#6");
582 stream
= new MemoryStream ();
583 writer
= new MyBinaryWriter (stream
);
584 writer
.WriteLeb128 (0);
586 Assert
.AreEqual (new byte[] { 0 }
, stream
.ToArray (), "#7");
590 [Category ("MultiThreaded")]
591 public void AsynchronousModeWrites ()
593 string filename
= Path
.Combine (TempFolder
, "myfilename");
595 using (var file
= new FileStream (filename
, FileMode
.CreateNew
,
596 FileAccess
.Write
, FileShare
.Read
, 4096, FileOptions
.Asynchronous
))
597 using (var writer
= new BinaryWriter (file
)) {
598 writer
.Write (new byte[] { 0xCC, 0xDD }
);
599 writer
.Write (new byte[] { 0xAA }
);
602 using (var inputStream
= new FileStream (filename
, FileMode
.Open
))
604 using (var reader
= new BinaryReader (inputStream
)) {
605 var l
= reader
.ReadByte ();
606 Assert
.AreEqual (0xCC, l
);
608 Assert
.AreEqual (3, inputStream
.Length
);
614 public void BaseStreamCallsFlush ()
616 FlushStream stream
= new FlushStream ();
617 BinaryWriter writer
= new BinaryWriter (stream
);
618 Stream s
= writer
.BaseStream
;
619 Assert
.IsTrue (stream
.FlushCalled
);
622 private void DeleteFile (string path
)
624 if (File
.Exists (path
))
628 class FlushStream
: Stream
630 public bool FlushCalled
;
632 public override bool CanRead
{
636 public override bool CanSeek
{
640 public override bool CanWrite
{
644 public override long Length
{
648 public override long Position
{
653 public override void Flush ()
658 public override int Read (byte[] buffer
, int offset
, int count
)
663 public override int ReadByte ()
668 public override long Seek (long offset
, SeekOrigin origin
)
673 public override void SetLength (long value)
677 public override void Write (byte[] buffer
, int offset
, int count
)
681 public override void WriteByte (byte value)