序列化和反序列化
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using UniversalModulePlugin.CommandManager;
namespace UniversalModulePlugin.Template
{
public static class LocationCommand
{
//队列的存放路径
public static string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\UniversalModule\\QueueLink\\queue.bin";
//保存队列
public static void Save(QueueCommand QueueCommand)
{
//1:对应读取数据1
var data = ZipObject.CompressionObject(QueueCommand);//将对象信息压缩
FileStream fs = new FileStream(path, FileMode.Create);//创建文件流
fs.Write(data, 0, data.Length);//写入文件中
fs.Close();//关闭文件流
////判断第一次保存时,虚拟数据是否为空
//if (QueueCommand != null)
//{
// FileStream fs = new FileStream(TManager.path + "\\queueBind.bin", FileMode.Create);
// BinaryFormatter bf = new BinaryFormatter();
// bf.Serialize(fs, QueueCommand);
// fs.Close();
//}
}
//读取数据
public static QueueCommand GetReader()
{
//1
QueueCommand QueueCommand = new QueueCommand();
if (!Directory.Exists(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\UniversalModule\\QueueLink"))
{
Directory.CreateDirectory(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\UniversalModule\\QueueLink");
}
if (!File.Exists(path))
{
File.Create(path);
}
else
{
FileStream fs = new FileStream(path, FileMode.Open);
byte[] data = new byte[(int)fs.Length];
fs.Read(data, 0, (int)fs.Length);
var obj = ZipObject.DecompressionObject(data);
fs.Close();
if (obj != null)
{
QueueCommand = obj as QueueCommand;
}
}
return QueueCommand;
//QueueCommand QueueCommand = new QueueCommand();
//if (File.Exists(TManager.path + "\\queueBind.bin"))
//{
// FileStream fs = new FileStream(TManager.path + "\\queueBind.bin", FileMode.Open);
// BinaryFormatter bf = new BinaryFormatter();
// QueueCommand = (QueueCommand)bf.Deserialize(fs);
// fs.Close();
//}
//return QueueCommand;
}
public class ZipObject
{
public static byte[] CompressionObject(object DataOriginal)
{
if (DataOriginal == null) return null;
BinaryFormatter bFormatter = new BinaryFormatter();
MemoryStream mStream = new MemoryStream();
bFormatter.Serialize(mStream, DataOriginal); byte[] bytes = mStream.ToArray();
MemoryStream oStream = new MemoryStream();
DeflateStream zipStream = new DeflateStream(oStream, CompressionMode.Compress); zipStream.Write(bytes, 0, bytes.Length); zipStream.Flush(); zipStream.Close(); return oStream.ToArray();
}
public static object DecompressionObject(byte[] bytes)
{
if (bytes == null) return null;
MemoryStream mStream = new MemoryStream(bytes);
mStream.Seek(0, SeekOrigin.Begin); DeflateStream unZipStream = new DeflateStream(mStream, CompressionMode.Decompress, true);
object dsResult = null;
BinaryFormatter bFormatter = new BinaryFormatter();
dsResult = (object)bFormatter.Deserialize(unZipStream);
return dsResult;
}
}
}
}

浙公网安备 33010602011771号