C# 将含有byte[]字段的类序列化与反序列化
来源:互联网 发布:单片机常用代码 编辑:程序博客网 时间:2024/06/06 01:19
类DemoClass里的string Title字段包含了图片文件的名称,byte[]内含有图片文件的内容。将该类DemoClass的实例demo序列化,转为byte[],以便传入MySQL数据库中。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
namespace SerializeDeserializeClass
{
[Serializable]
class DemoClass
{
public string Title;
public byte[] Arr;
}
class Demo
{
private static byte[] FileToBytes(string filePath)
{
FileInfo fi = new FileInfo(filePath);
byte[] buffer = new byte[fi.Length];
FileStream fs = fi.OpenRead();
fs.Read(buffer, 0, Convert.ToInt32(fi.Length));
fs.Close();
return buffer;
}
private static void CreateFile(byte[] fileBuffer, string newFilePath)
{
if (File.Exists(newFilePath))
{
File.Delete(newFilePath);
}
FileStream fs = new FileStream(newFilePath, FileMode.CreateNew);
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(fileBuffer, 0, fileBuffer.Length); //用文件流生成一个文件
bw.Close();
fs.Close();
}
private static byte[] SerializeUIIntoBytes(string fileTitle,string filePath)
{
DemoClass demo = new DemoClass();
demo.Title = fileTitle;
demo.Arr = FileToBytes(filePath);
byte[] arr = null;
using (MemoryStream ms = new MemoryStream())
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, demo);
ms.Flush();
arr = ms.ToArray();
}
return arr;
}
private static DemoClass DeserializeUIBytes(byte[] arr)
{
using (MemoryStream ms = new MemoryStream())
{
ms.Write(arr, 0, arr.Length);
ms.Flush();
ms.Position = 0;
BinaryFormatter bf = new BinaryFormatter();
DemoClass demo = (DemoClass)bf.Deserialize(ms);
return demo;
}
}
public void UITest()
{
string heartPath = @"D:\pics\heart.png";
byte[] demoArr = SerializeUIIntoBytes("heart",heartPath);
DemoClass demo = DeserializeUIBytes(demoArr);
string newPath = @"D:\pics\hearttest.png";
CreateFile(demo.Arr, newPath);
}
static void Main(string[] args)
{
Demo d = new Demo();
d.UITest();
Console.Read();
}
}
}
----------稍后添加参考文献-----------
- C# 将含有byte[]字段的类序列化与反序列化
- C#类的序列化与反序列化
- Unity与C#的序列化与反序列化
- c#序列化与反序列化
- C#序列化与反序列化
- C#序列化与反序列化
- c#序列化 与 反序列化
- C#序列化与反序列化
- C# 序列化与反序列化
- C#序列化与反序列化
- C#序列化与反序列化
- C#序列化与反序列化
- C# 序列化与反序列化
- C#序列化与反序列化
- C# 序列化 与 反序列化
- C#序列化与反序列化
- C# 序列化与反序列化
- C#序列化与反序列化
- 下载安装apk 与webview 百度界面
- JAVA运算符
- 结合php与JQuery仅用两个页面对数据库的数据进行增删改
- 设计模式解密(22)- 访问者模式
- keras中文文档笔记10——数据预处理
- C# 将含有byte[]字段的类序列化与反序列化
- xml中1字节的UTF-8序列的字节1无效([字符编码]Invalid byte 1 of 1-byte UTF-8 sequence终极解决方案)
- lua实现ipairs、pairs的功能
- LuoguP1115最大字段和
- 课程5 :神经网络迷你项目 联系8:线性表征能力
- System.Data.SqlClient.SqlException 在将 varchar 值 'xxx' 转换成数据类型 int 时失败。
- C++&Pascal——用DEV C++/free pascal制作dll,并用C++/Pascal调用
- 数据库设计原则一
- JAVA字符串