標籤:
private void SaveToFile(byte[] value,string filePath){ System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.OpenOrCreate); fs.Write(value, 0, value.Length); fs.Flush(); fs.Close(); }private byte[] ConvertStreamToByteBuffer(string filePath){ System.IO.Stream theStream = new FileStream(filePath, FileMode.Open, FileAccess.Read); int b1; System.IO.MemoryStream tempStream = new System.IO.MemoryStream(); while ((b1 = theStream.ReadByte()) != -1) { tempStream.WriteByte(((byte)b1)); } return tempStream.ToArray();} public static byte[] GetsetBinary(DataTable dt){ byte[] bArrayResult = null; //用於存放序列化後的資料 dt.RemotingFormat = SerializationFormat.Binary; //指定DataSet序列化格式是二進位 MemoryStream ms = new MemoryStream();//定義記憶體流對象,用來存放DataSet序列化後的值 IFormatter IF = new BinaryFormatter();//產生二進位序列化格式 IF.Serialize(ms, dt);//序列化到記憶體中 bArrayResult = ms.ToArray(); // 將DataSet轉化成byte[] ms.Close(); ms.Dispose(); return bArrayResult; } public DataTable RetrieveDataSet(byte[] binaryData){ MemoryStream ms = new MemoryStream(binaryData);//建立記憶體流 IFormatter bf = new BinaryFormatter();//產生二進位序列化格式 object obj = bf.Deserialize(ms);//反序列化到記憶體中 //類型檢驗 ms.Close(); if (obj is DataTable) { DataTable dataSetResult = (DataTable)obj; return dataSetResult; } else { return null; }} public static byte[] GetBytesByImage(System.Drawing.Image image){ byte[] photo_byte = null; using (MemoryStream ms = new MemoryStream()) { Bitmap bmp = new Bitmap(image); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); photo_byte = new byte[ms.Length]; ms.Position = 0; ms.Read(photo_byte, 0, Convert.ToInt32(ms.Length)); bmp.Dispose(); } return photo_byte;} //調用方法:DataTable dt = DbHelperSQL.Query(sql);DataTable newDt = dt.Clone();newDt.Columns.Add("photo", System.Type.GetType("System.Byte[]")); foreach (DataRow dr in dt.Rows) { newDt.ImportRow(dr); System.Drawing.Image img = System.Drawing.Image.FromFile(StudentPhotoPath(dr["PhotoUrl"].ToString())); img = FixedSize(img, 135, 180); newDt.Rows[newDt.Rows.Count - 1]["photo"] = GetBytesByImage(img); img.Dispose();}byte[] tableByteArray = GetsetBinary(newDt);SaveToFile(tableByteArray, @"D:\hello.yzd");
byte[] byteArray = ConvertStreamToByteBuffer(@"D:\hello.yzd");DataTable dt = RetrieveDataSet(byteArray);
【轉】DataTable儲存與讀取 stream