Csharp:The .dat File using BinaryReader and BinaryWriter Convert to DataTable
1 /// <summary> 2 /// 添加 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void button1_Click(object sender, EventArgs e) 7 { 8 BinaryWriter binWriter = new BinaryWriter(File.OpenWrite(datfile), Encoding.Unicode);//StreamWriter 9 binWriter.Seek(0, SeekOrigin.End); 10 num =int.Parse(this.textBox1.Text.Trim()); 11 strsex = this.textBox2.Text.Trim(); 12 strname = this.textBox3.Text.Trim(); 13 creatdate =this.dateTimePicker1.Value; 14 binWriter.Write(num); 15 binWriter.Write(strsex); 16 binWriter.Write(strname); 17 binWriter.Write(creatdate.ToShortDateString() + Environment.NewLine); 18 binWriter.Flush(); 19 binWriter.Close(); 20 21 22 } 23 24 25 26 /// <summary> 27 /// 顯示全部 28 /// </summary> 29 /// <param name="sender"></param> 30 /// <param name="e"></param> 31 private void button2_Click(object sender, EventArgs e) 32 { 33 34 //創建文件 35 //Write out to binary file 36 //if (!File.Exists(datfile)) 37 //{ 38 // FileStream myFile = File.Create(datfile); 39 // myFile.Close(); 40 //} 41 //strsex = "男"; 42 //num = 124; 43 //creatdate = DateTime.Now; 44 //strname = "塗聚文geovindu"; 45 //BinaryWriter binWriter = new BinaryWriter(File.OpenWrite(datfile), Encoding.Unicode);//StreamWriter 46 //binWriter.Write(num); 47 //binWriter.Write(strsex); 48 //binWriter.Write(strname); 49 //binWriter.Write(creatdate.ToShortDateString() + Environment.NewLine); 50 ////binWriter.Seek(1, SeekOrigin.Begin); 51 //strsex = "男"; 52 //num = 125; 53 //creatdate = DateTime.Now; 54 //strname = "劉志軍"; 55 ////BinaryWriter binWriter = new BinaryWriter(File.OpenWrite(datfile)); 56 //binWriter.Write(num); 57 //binWriter.Write(strsex); 58 //binWriter.Write(strname); 59 //binWriter.Write(creatdate.ToShortDateString() + Environment.NewLine); 60 ////binWriter.Seek(2, SeekOrigin.Current); 61 //strsex = "女"; 62 //num = 126; 63 //creatdate = DateTime.Now; 64 //strname = "孩子"; 65 ////BinaryWriter binWriter = new BinaryWriter(File.OpenWrite(datfile)); 66 //binWriter.Write(num); 67 //binWriter.Write(strsex); 68 //binWriter.Write(strname); 69 //binWriter.Write(creatdate.ToShortDateString() + Environment.NewLine); 70 ////binWriter.Seek(3, SeekOrigin.Current); 71 //binWriter.Flush(); 72 //binWriter.Close(); 73 74 //Read from binary file 75 //最一條 76 //byte[] bs; 77 //using (FileStream fs = new FileStream(datfile, FileMode.Open, FileAccess.Read)) 78 //{ 79 // using (BinaryReader br = new BinaryReader(fs)) 80 // { 81 // bs = br.ReadBytes((int)fs.Length); 82 // } 83 //} 84 //foreach (byte detail in bs) 85 //{ 86 // Console.WriteLine(detail); 87 //} 88 dt = null; 89 dt = new DataTable(); 90 dt.Columns.Add("ID", typeof(int)); 91 dt.Columns.Add("Sex", typeof(string)); 92 dt.Columns.Add("ReName", typeof(string)); 93 dt.Columns.Add("CreateTime", typeof(DateTime)); 94 95 using (BinaryReader binaryReader = new BinaryReader(File.Open(datfile, FileMode.Open), Encoding.Unicode)) 96 { 97 98 //binaryReader.BaseStream.Seek(0, SeekOrigin.Begin); 99 //1 100 //while (true) 101 //{ 102 // num = binaryReader.ReadInt32(); 103 // strsex = binaryReader.ReadString(); 104 // strname = binaryReader.ReadString(); 105 // creatdate = DateTime.Parse(binaryReader.ReadString()); 106 // //data.Add(k, v); 107 108 // if (binaryReader.BaseStream.Position == binaryReader.BaseStream.Length) 109 // break; 110 //} 111 // 112 //2 113 while (binaryReader.PeekChar() != -1) 114 { 115 try 116 { 117 num = binaryReader.ReadInt32(); 118 strsex = binaryReader.ReadString(); 119 strname = binaryReader.ReadString(); 120 creatdate = DateTime.Parse(binaryReader.ReadString()); 121 dt.Rows.Add(num, strsex, strname, creatdate); 122 } 123 catch (Exception ex) 124 { 125 ex.Message.ToString(); 126 break; 127 } 128 129 130 } 131 binaryReader.Close(); 132 } 133 134 //BinaryReader binReader = new BinaryReader(File.OpenRead(datfile), Encoding.Unicode); 135 136 //num = binReader.ReadInt32(); 137 //strsex = binReader.ReadString(); 138 //strname = binReader.ReadString(); 139 //creatdate = DateTime.Parse(binReader.ReadString()); 140 141 this.textBox1.Text = num.ToString(); 142 this.textBox2.Text = strsex; 143 this.textBox3.Text = strname; 144 this.dateTimePicker1.Value = creatdate; 145 //binReader.PeekChar(); 146 147 //num = binReader.ReadInt32(); 148 //this.textBox4.Text = num.ToString(); 149 //binReader.Close(); 150 151 this.dataGridView1.DataSource = dt; 152 153 } 154 /// <summary> 155 /// 156 /// </summary> 157 /// <param name="FilePath"></param> 158 /// <param name="buff"></param> 159 public static void WriteBuffer(string FilePath, byte[] buff) 160 { 161 StreamWriter Writer = File.AppendText(FilePath); 162 foreach (byte i in buff) 163 Writer.BaseStream.WriteByte(i); 164 Writer.Close(); 165 } 166 /// <summary> 167 /// 查找 168 /// </summary> 169 /// <param name="sender"></param> 170 /// <param name="e"></param> 171 private void button3_Click(object sender, EventArgs e) 172 { 173 string s = this.textBox4.Text.Trim(); 174 using (BinaryReader binaryReader = new BinaryReader(File.Open(datfile, FileMode.Open), Encoding.Unicode)) 175 { 176 //binaryReader.BaseStream.Seek(0, SeekOrigin.Begin); 177 //1 178 //while (true) 179 //{ 180 // num = binaryReader.ReadInt32(); 181 // strsex = binaryReader.ReadString(); 182 // strname = binaryReader.ReadString(); 183 // creatdate = DateTime.Parse(binaryReader.ReadString()); 184 // //data.Add(k, v); 185 186 // if (binaryReader.BaseStream.Position == binaryReader.BaseStream.Length) 187 // break; 188 //} 189 // 190 //2 191 while (binaryReader.PeekChar() != -1) 192 { 193 try 194 { 195 num = binaryReader.ReadInt32(); 196 strsex = binaryReader.ReadString(); 197 strname = binaryReader.ReadString(); 198 creatdate = DateTime.Parse(binaryReader.ReadString()); 199 if (strname.Contains(s)) 200 { 201 this.label2.Text=binaryReader.BaseStream.Position.ToString(); 202 this.label3.Text =(binaryReader.BaseStream.Length-binaryReader.BaseStream.Seek(0, SeekOrigin.Current)).ToString(); 203 setCurrent = binaryReader.BaseStream.Seek(0, SeekOrigin.Current); 204 //binaryReader.BaseStream.Seek((binaryReader.BaseStream.Position / 50) * 50, 0); 205 this.textBox1.Text = num.ToString(); 206 this.textBox2.Text = strsex; 207 this.textBox3.Text = strname; 208 this.dateTimePicker1.Value = creatdate; 209 } 210 211 } 212 catch (Exception ex) 213 { 214 ex.Message.ToString(); 215 break; 216 } 217 218 219 } 220 221 222 223 binaryReader.Close(); 224 } 225 } 226 /// <summary> 227 /// 修改,創建 228 /// </summary> 229 /// <param name="sender"></param> 230 /// <param name="e"></param> 231 private void button4_Click(object sender, EventArgs e) 232 { 233 #region 創建 塗聚文 20130329 234 235 //if (File.Exists(datfile)) 236 //{ 237 // File.Delete(datfile); 238 //} 239 240 //dt = null; 241 //dt = new DataTable(); 242 //dt.Columns.Add("ID", typeof(int)); 243 //dt.Columns.Add("Sex", typeof(string)); 244 //dt.Columns.Add("ReName", typeof(string)); 245 //dt.Columns.Add("CreateTime", typeof(DateTime)); 246 //dt.Rows.Add(1, "男", "塗聚文", "2013-03-1"); 247 //dt.Rows.Add(2, "女", "王熙鳳", "2013-03-11"); 248 //dt.Rows.Add(3, "女", "劉麗", "2013-03-21"); 249 //dt.Rows.Add(4, "男", "劉海粟", "2013-03-3"); 250 //dt.Rows.Add(5, "男", "高春輝", "2013-03-5"); 251 //BinaryWriter binWriter = new BinaryWriter(File.OpenWrite(datfile), Encoding.Unicode);//StreamWriter 252 ////binWriter.BaseStream.Seek(0, SeekOrigin.Current); 253 //////binWriter.Seek((int)setCurrent, SeekOrigin.Current);//定位有問題 254 //foreach (DataRow dr in dt.Rows) 255 //{ 256 // num=(int)dr["ID"]; 257 // strsex =(string) dr["Sex"]; 258 // strname = (string)dr["ReName"]; 259 // creatdate =(DateTime)dr["CreateTime"]; 260 // binWriter.Write(num); 261 // binWriter.Write(strsex); 262 // binWriter.Write(strname); 263 // binWriter.Write(creatdate.ToShortDateString() + Environment.NewLine); //+ Environment.NewLine //加一行,成了現在的行 264 //} 265 266 //binWriter.Flush(); 267 //binWriter.Close(); 268 #endregion 269 270 271 272 //num = int.Parse(this.textBox1.Text.Trim()); 273 //strsex = this.textBox2.Text.Trim(); 274 //strname = this.textBox3.Text.Trim(); 275 //creatdate = this.dateTimePicker1.Value; 276 //binWriter.Write(num); 277 //binWriter.Write(strsex); 278 //binWriter.Write(strname); 279 //binWriter.Write(creatdate.ToShortDateString()); //+ Environment.NewLine //加一行,成了現在的行 280 281 //binWriter.Flush(); 282 //binWriter.Close(); 283 284 //using (BinaryReader binaryReader = new BinaryReader(File.Open(datfile, FileMode.Open), Encoding.Unicode)) 285 //{ 286 // while (binaryReader.PeekChar() != -1) 287 // { 288 // //binaryReader.BaseStream.Seek(setCurrent, SeekOrigin.Begin); 289 // num = binaryReader.ReadInt32(); 290 // strsex = binaryReader.ReadString(); 291 // strname = binaryReader.ReadString(); 292 // creatdate = DateTime.Parse(binaryReader.ReadString()); 293 // this.textBox1.Text = num.ToString(); 294 // this.textBox2.Text = strsex; 295 // this.textBox3.Text = strname; 296 // this.dateTimePicker1.Value = creatdate; 297 // } 298 //} 299 300 301 #region 修改 302 303 BinaryWriter binWriter = new BinaryWriter(File.OpenWrite(datfile), Encoding.Unicode);//StreamWriter 304 binWriter.BaseStream.Position = 0; 305 num = 8;// int.Parse(this.textBox1.Text.Trim()); 306 strsex = "女";// this.textBox2.Text.Trim(); 307 //strname = this.textBox3.Text.Trim(); 308 //creatdate = this.dateTimePicker1.Value; 309 binWriter.Write(num); 310 binWriter.BaseStream.Position = 4; 311 binWriter.Write(strsex); 312 //binWriter.Write(strname); 313 //binWriter.Write(creatdate.ToShortDateString()); //+ Environment.NewLine //加一行,成了現在的行 314 binWriter.Flush(); 315 binWriter.Close(); 316 317 #endregion 318 319 #region 查找數據位置 320 cudt = null; 321 cudt = new DataTable(); 322 cudt.Columns.Add("ID", typeof(int)); 323 cudt.Columns.Add("Position", typeof(int)); 324 cudt.Columns.Add("Legnth", typeof(int)); 325 cudt.Columns.Add("Sart", typeof(int)); 326 cudt.Columns.Add("End", typeof(int)); 327 cudt.Columns.Add("Name", typeof(string)); 328 cudt.Columns.Add("Value", typeof(string)); 329 330 int pos = 0; 331 int row = 0; 332 int p = 0; 333 int br = 0; 334 string s = ""; 335 int starpos = 0; 336 int endpos = 0; 337 // 1. 338 using (BinaryReader b = new BinaryReader(File.Open(datfile, FileMode.Open, FileAccess.Read),Encoding.Unicode)) 339 { 340 // 2. 341 // Position and length variables. 342 343 // 2A. 344 // Use BaseStream. 345 int length = (int)b.BaseStream.Length; 346 int k = 0; 347 while (b.PeekChar() != -1)//pos < length 348 { 349 350 try 351 { 352 starpos = (int)b.BaseStream.Position; 353 // 354 num = b.ReadInt32(); 355 p = (int)b.BaseStream.Position; 356 endpos = (int)b.BaseStream.Position; 357 pos = p; 358 // b.BaseStream.Seek(pos, SeekOrigin.Current); 359 br = (int)b.BaseStream.Length-p; 360 s = b.GetType().ToString(); 361 cudt.Rows.Add(row, pos, br, starpos, endpos, s,num.ToString());//添加第一記錄 362 //第二條記錄 363 starpos = (int)b.BaseStream.Position; 364 strsex = b.ReadString(); 365 p = (int)b.BaseStream.Position; 366 endpos = p; 367 pos = p; 368 br = (int)b.BaseStream.Length-p; 369 s = b.GetType().ToString(); 370 cudt.Rows.Add(row, pos, br, starpos, endpos, s,strsex);//添加第二條記錄 371 //第三第記錄 372 starpos=(int)b.BaseStream.Position; 373 strname = b.ReadString(); 374 p = (int)b.BaseStream.Position; 375 endpos = p; 376 pos = p; 377 // b.BaseStream.Seek(pos, SeekOrigin.Current); 378 br = (int)b.BaseStream.Length - p; 379 s = b.GetType().ToString(); 380 cudt.Rows.Add(row, p, br, starpos, endpos, s,strname);//添加第三條記錄 381 382 //第四條記錄 383 starpos = (int)b.BaseStream.Position; 384 creatdate = DateTime.Parse(b.ReadString()); 385 p = (int)b.BaseStream.Position; 386 endpos = p; 387 pos = p; 388 br = (int)b.BaseStream.Length - p; 389 s = b.GetType().ToString(); 390 cudt.Rows.Add(row, p, br, starpos, endpos, s, creatdate);//第四記錄 391 392 k++; 393 } 394 395 396 catch (Exception ex) 397 { 398 ex.Message.ToString(); 399 break; 400 401 } 402 403 404 // 4. 405 // Advance our position variable. 406 pos += sizeof(int); 407 row++; 408 } 409 410 //b.BaseStream.Seek(7, SeekOrigin.Current); 411 //string f=b.ReadString(); 412 //MessageBox.Show(f); 413 //指定位顯示 414 b.BaseStream.Position = 0; 415 MessageBox.Show(b.ReadInt32().ToString()); 416 b.BaseStream.Position = 4; 417 MessageBox.Show(b.ReadString()); 418 b.BaseStream.Position = 7; 419 MessageBox.Show(b.ReadString()); 420 b.Close(); 421 422 } 423 this.dataGridView2.DataSource = cudt; 424 #endregion 425 426 427 428 } 429 430 431 /// <summary> 432 /// 433 /// </summary> 434 /// <param name="sectorid"></param> 435 /// <returns></returns> 436 //public string getclientid(string sectorid) 437 //{ 438 // try 439 // { 440 // DataSet dsobj = new DataSet(); 441 // bllobj = new ConverterClass(); 442 // string retclientval = "0"; 443 444 // dsobj = bllobj.BinaryDeSerialize(strDataPath + "\\" + "BinaryClientlocation.dat"); 445 // DataRow[] dr = dsobj.Tables[0].Select("client_location_id in(" + locationid + ")"); 446 // if (dr.Length > 0) 447 // { 448 // foreach (DataRow drow in dr) 449 // { 450 // retclientval = retclientval + "," + drow["client_id"].ToString(); 451 // } 452 // } 453 // return retclientval; 454 // } 455 // catch (Exception ex) 456 // { 457 // ex.Message.ToString(); 458 // } 459 //} 460 }
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)