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 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(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; } } } }