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 }