using System;
|
using System.Collections.Generic;
|
using System.IO.Compression;
|
using System.IO;
|
using System.Linq;
|
using System.Runtime.Serialization.Formatters.Binary;
|
using System.Text;
|
using System.Threading.Tasks;
|
using System.Windows.Forms;
|
using System.Collections.Concurrent;
|
using MessagePack;
|
using MessagePack.Resolvers;
|
using System.Runtime.CompilerServices;
|
using System.Runtime.Serialization;
|
//using NPOI.SS.Formula.Functions;
|
|
namespace CommonBase
|
{
|
public class Base64Helper
|
{
|
public static void SaveCompressedBase64ToFile<T>(T obj, string filePath)
|
{
|
// 将对象序列化为字节数组
|
var formatter = new BinaryFormatter();
|
using (var memoryStream = new MemoryStream())
|
{
|
formatter.Serialize(memoryStream, obj);
|
byte[] compressedData;
|
|
// 使用 GZip 压缩字节数组
|
using (var outputStream = new MemoryStream())
|
{
|
using (var gzipStream = new GZipStream(outputStream, CompressionMode.Compress))
|
{
|
memoryStream.Position = 0;
|
memoryStream.CopyTo(gzipStream);
|
}
|
compressedData = outputStream.ToArray();
|
}
|
|
// 将压缩后的字节数组转为 Base64 字符串
|
var base64String = Convert.ToBase64String(compressedData);
|
|
// 将 Base64 字符串写入文件
|
File.WriteAllText(filePath, base64String);
|
}
|
}
|
|
public static T ReadCompressedBase64FromFile<T>(string filePath)
|
{
|
// 从文件中读取 Base64 字符串
|
var base64String = File.ReadAllText(filePath);
|
|
// 将 Base64 字符串转为压缩后的字节数组
|
byte[] compressedData = Convert.FromBase64String(base64String);
|
|
// 使用 GZip 解压缩字节数组
|
using (var inputStream = new MemoryStream(compressedData))
|
using (var outputStream = new MemoryStream())
|
{
|
using (var gzipStream = new GZipStream(inputStream, CompressionMode.Decompress))
|
{
|
gzipStream.CopyTo(outputStream);
|
}
|
|
// 将解压缩后的字节数组反序列化为对象
|
var formatter = new BinaryFormatter();
|
outputStream.Position = 0;
|
var obj = (T)formatter.Deserialize(outputStream);
|
|
return obj;
|
}
|
}
|
|
|
|
|
|
}
|
|
}
|