C#实现文件二进制存储

private static BinaryFormatter Transfer = new BinaryFormatter(); public int BinaryFileSav() { //-----二进制文件写入并存储 saveFileDialog1.Filter = "数据文件(*.tifs)|*.tifs"; saveFileDialog1.Title = "文件存储"; saveFileDialog1.FileName = "新数据文件.tifs"; saveFileDialog1.ShowDialog(); Stream flstr = new FileStream(saveFileDialog1.FileName, FileMode.Create); BinaryWriter sw = new BinaryWriter(flstr, Encoding.Unicode); byte[] buffer = ChangeObjectToByte(obj); sw.Write(buffer); sw.Close(); flstr.Close(); return 0; } public int BinaryFileOpen() { //-----二进制文件读取 openFileDialog1.Filter = "数据文件(*.tifs)|*.tifs"; openFileDialog1.Title = "文件打开"; openFileDialog1.FileName = ""; openFileDialog1.ShowDialog(); Stream flstr = new FileStream(openFileDialog1.FileName, FileMode.Open); BinaryReader sr = new BinaryReader(flstr, Encoding.Unicode); byte[] buffer = sr.ReadBytes((int)flstr.Length); FrameForm.Tifs.fileinfo = (FileInfo)ChangeByteToObject(buffer); sr.Close(); flstr.Close(); return 0; } #region ArrayList数组的二进制转化实现 ///

/// 序列化,存储用 /// /// 要序列化的对象 /// 转化成的byte private static byte[] ChangeObjectToByte(object obj) { try { MemoryStream ms = new MemoryStream(); //----将对象序列化 Transfer.Serialize(ms, obj); byte[] buffer = ms.GetBuffer(); return buffer; } catch (Exception err) { return null; } } /// /// 反序列化,读取用 /// /// 二进制流 private static object ChangeByteToObject(byte[] buffer) { try { MemoryStream ms = new MemoryStream(buffer, 0, buffer.Length, true, true); //----将流反序列化为对象 object obj = Transfer.Deserialize(ms); return obj; } catch (Exception err) { return null; } } #endregion 

 

obj代表任意数据类型。另外,最好在该类前加注[Serializable] //----必须令相应的类实现可序列化标记接口   字样

你可能感兴趣的:(C#专题之高级类,控件的使用)