BinaryReader,BinaryWriter

  1  using  System;
  2  using  System.IO;
  3  using  System.Globalization;
  4  using  System.Text;
  5  using  System.Data;
  6  using  System.Xml;
  7 
  8 
  9  public   class  BinStream
 10  {
 11       public  BinStream()
 12      {
 13          Writer();
 14          Reader();
 15           // ReaderWriteFile();
 16      }
 17       public   static   void  Main()
 18      {
 19          BinStream bs  =   new  BinStream();
 20          Console.ReadLine();
 21 
 22 
 23 
 24      }
 25 
 26 
 27       private    void  BinaryReaderWriterDemo()
 28      {
 29 
 30           string  FileName  =   " SampleDates.txt " ;
 31 
 32          FileStream myStream;
 33 
 34          BinaryWriter myWriter;
 35 
 36          BinaryReader myReader;
 37 
 38          DateTime theDate;
 39 
 40          Int64 dateInTicks;
 41 
 42          myStream  =   new  FileStream(FileName, FileMode.OpenOrCreate,
 43              FileAccess.Write, FileShare.ReadWrite);
 44 
 45          myWriter  =   new  BinaryWriter(myStream);
 46 
 47          theDate  =  DateTime.Now;
 48 
 49           do
 50          {
 51 
 52              myWriter.Write(theDate.ToUniversalTime().Ticks);
 53 
 54              theDate  =  theDate.AddDays( 1 );
 55 
 56          }  while  (theDate  <  DateTime.Now.AddDays( 7 ));
 57 
 58          myWriter.Close();
 59 
 60          myStream.Close();
 61          Console.WriteLine( " Data Written! " );
 62          Console.WriteLine(theDate.ToUniversalTime().Ticks.ToString());
 63          Console.WriteLine();
 64          myStream  =   new  FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
 65 
 66          myReader  =   new  BinaryReader(myStream);
 67          myReader.BaseStream.Seek( 0 , SeekOrigin.Begin);
 68           for  ( int  i  =   0 ; i  <   7 ; i ++ )
 69          {
 70 
 71              dateInTicks  =  (myReader.ReadInt64());
 72 
 73              theDate  =   new  DateTime(dateInTicks);
 74 
 75              Console.WriteLine( " {0} ticks is {1} " , dateInTicks, theDate.ToLongTimeString());
 76 
 77              Console.WriteLine(theDate.ToLongDateString());
 78 
 79          }
 80 
 81          myReader.Close();
 82 
 83          myStream.Close();
 84 
 85      } 
 86 
 87 
 88       private   void  Writer()
 89      {
 90           try
 91          {
 92              Console.Out.WriteLine( " Preparing to Write ... " );
 93               // Open a FileStream on the file "aboutme"
 94              FileStream fout  =   new  FileStream( " aboutme.txt " , FileMode.OpenOrCreate,
 95              FileAccess.Write, FileShare.ReadWrite);
 96               // Create a BinaryWriter from the FileStream
 97              BinaryWriter bw  =   new  BinaryWriter(fout);
 98               // Create some arbitrary variables
 99               string  name  =   " Saurabh塗聚文,涂斯博。 " ;
100               int  age  =   20 ;
101               double  height  =   5.11 ;
102               bool  single  =   true ;
103               char  gender  =   ' M ' ;
104               // Write the values to file
105              bw.Write(name);
106              bw.Write(age);
107              bw.Write(height);
108              bw.Write(single);
109              bw.Write(gender);
110               // Close the file and free resources
111              bw.Close();
112              Console.WriteLine( " Data Written! " );
113              Console.WriteLine();
114 
115             string  utf8String  =   " anqing:瀹夊簡 " ; // ASCII中文
116 
117            //  Create two different encodings.
118           Encoding utf8 =  Encoding.UTF8;
119           Encoding defaultCode =  Encoding.Default;
120 
121            //  Convert the string into a byte[].
122            byte [] utf8Bytes  =  defaultCode.GetBytes(utf8String);
123 
124            //  Perform the conversion from one encoding to the other.
125            byte [] defaultBytes  =  Encoding.Convert(utf8, defaultCode, utf8Bytes );
126              
127            //  Convert the new byte[] into a char[] and then into a string.
128            //  This is a slightly different approach to converting to illustrate
129            //  the use of GetCharCount/GetChars.
130            char [] defaultChars  =   new   char [defaultCode.GetCharCount(defaultBytes ,  0 , defaultBytes .Length)];
131           defaultCode.GetChars(defaultBytes ,  0 , defaultBytes .Length, defaultChars ,  0 );
132            string  defaultString  =   new   string (defaultChars );
133 
134            //  Display the strings created before and after the conversion.
135           Console.WriteLine( " Original string: {0} " , utf8String);
136           Console.WriteLine( " Ascii converted string: {0} " , defaultString);
137 
138            // 或者如下:
139            // byte[] buffer1 = Encoding.Default.GetBytes(utf8String );
140            // byte[] buffer2 = Encoding.Convert(Encoding.UTF8, Encoding.Default, buffer1, 0, buffer1.Length);
141            // string strBuffer = Encoding.Default.GetString(buffer2, 0, buffer2.Length);
142 
143 
144            string  testfile  =   @" weatherutf.txt " ; // 直接看文件是亂碼
145 
146            //  create a test file using BinaryWriter
147           FileStream fs  =  File.Create(testfile);
148           UTF8Encoding utf  =   new  UTF8Encoding();
149 
150           BinaryWriter bws  =   new  BinaryWriter(fs, utf8);
151            string  bstring;
152 
153           bstring  =   " This is line #1 of text 涂聚文,塗鴉written as a binary stream.\r\n " ;
154           bstring  +=   " This is line #2 of text written as a binary stream.\r\n " ;
155           bstring  +=   " This is line #3 of text written as a binary stream. " ;
156           bws.Write(bstring);
157 
158            //  reset the stream position for reading
159           fs.Seek( 0 , SeekOrigin.Begin);
160 
161            //  Read the string as raw bytes using FileStream...
162            //  The first series of bytes is the UTF7 encoded length of the
163            //  string. In this case, however, it is just the first two bytes.
164            int  len  =  fs.ReadByte()  &   0x7f ;
165           len  +=  fs.ReadByte()  *   0x80 ;
166            //  read the string as bytes of length = len
167            byte [] rawbytes  =   new   byte [len];
168           fs.Read(rawbytes,  0 , len);
169 
170            //  display the string
171           Console.WriteLine( " Read from FileStream:   \n "   +  utf8.GetString(rawbytes));
172           Console.WriteLine();
173 
174            //  Now, read the string using BinaryReader
175 
176            //  reset the stream position for reading again
177           fs.Seek( 0 , SeekOrigin.Begin);
178 
179           BinaryReader br  =   new  BinaryReader(fs, utf8);
180            //  ReadString will read the length prefix and return the string.
181           bstring  =  br.ReadString();
182           Console.WriteLine( " Read from BinaryReader: \n "   +  bstring);
183           fs.Close();
184 
185 
186          }
187           catch  (IOException e)
188          {
189              Console.WriteLine( " An IO Exception Occurred : "   +  e);
190          }
191      }
192      private   void  Reader()
193      {
194           try
195          {
196              Console.WriteLine( " Preparing to Read ... " );
197               // Open a FileStream in Read mode
198              FileStream fin  =   new  FileStream( " aboutme.txt " , FileMode.Open,
199              FileAccess.Read, FileShare.ReadWrite);
200               // Create a BinaryReader from the FileStream
201              BinaryReader br  =   new  BinaryReader(fin);
202               // Seek to the start of the file
203              br.BaseStream.Seek( 0 , SeekOrigin.Begin);
204               // Read from the file and store the values to the variables
205               string  name  =  br.ReadString();
206               int  age  =  br.ReadInt32();
207               double  height  =  br.ReadDouble();
208               bool  single  =  br.ReadBoolean();
209               char  gender  =  br.ReadChar();
210               // Display the data on the console
211              Console.WriteLine( " Name : "   +  name);
212              Console.WriteLine( " Age : "   +  age);
213              Console.WriteLine( " Height : "   +  height);
214              Console.WriteLine( " Single? : "   +  single);
215              Console.WriteLine( " Gender M/F: "   +  gender);
216               // Close the stream and free the resources
217              br.Close();
218              Console.WriteLine( " Data Read! " );
219          }
220           catch  (IOException e)
221          {
222              Console.WriteLine( " An IO Exception Occurred : "   +  e);
223          }
224      }
225  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值