Skip to content

Commit ebedca7

Browse files
committed
[修改]1. 修改压缩库为 ICSharpCode.SharpZipLib.GZip 实现
1 parent 75604b0 commit ebedca7

File tree

3 files changed

+63
-25
lines changed

3 files changed

+63
-25
lines changed

GameFrameX.Utility/CompressionHelper.cs

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.IO.Compression;
1+
using System.Buffers;
2+
using ICSharpCode.SharpZipLib.GZip;
23

34
namespace GameFrameX.Utility;
45

@@ -21,16 +22,13 @@ public static byte[] Compress(byte[] bytes)
2122
return bytes;
2223
}
2324

24-
using (var uncompressed = new MemoryStream(bytes))
25+
using (var compressStream = new MemoryStream())
2526
{
26-
using (var compressed = new MemoryStream())
27+
using (var gZipOutputStream = new GZipOutputStream(compressStream))
2728
{
28-
using (var gZipStream = new GZipStream(compressed, CompressionMode.Compress, true))
29-
{
30-
uncompressed.CopyTo(gZipStream);
31-
}
32-
33-
return compressed.ToArray();
29+
gZipOutputStream.Write(bytes, 0, bytes.Length);
30+
var press = compressStream.ToArray();
31+
return press;
3432
}
3533
}
3634
}
@@ -50,16 +48,29 @@ public static byte[] Decompress(byte[] bytes)
5048
return bytes;
5149
}
5250

53-
using (var compressed = new MemoryStream(bytes))
51+
using (var compressedStream = new MemoryStream(bytes))
5452
{
55-
using (var decompressed = new MemoryStream())
53+
using (var gZipInputStream = new GZipInputStream(compressedStream))
5654
{
57-
using (var gZipStream = new GZipStream(compressed, CompressionMode.Decompress))
55+
using (var decompressedStream = new MemoryStream())
5856
{
59-
gZipStream.CopyTo(decompressed);
60-
}
57+
var buffer = ArrayPool<byte>.Shared.Rent(8192);
58+
try
59+
{
60+
int count;
61+
while ((count = gZipInputStream.Read(buffer, 0, buffer.Length)) != 0)
62+
{
63+
decompressedStream.Write(buffer, 0, count);
64+
}
65+
}
66+
finally
67+
{
68+
ArrayPool<byte>.Shared.Return(buffer);
69+
}
6170

62-
return decompressed.ToArray();
71+
var array = decompressedStream.ToArray();
72+
return array;
73+
}
6374
}
6475
}
6576
}

GameFrameX.Utility/GameFrameX.Utility.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
<ItemGroup>
4545
<PackageReference Include="GameFrameX.Foundation.Hash" Version="1.3.2" />
4646
<PackageReference Include="GameFrameX.Foundation.Logger" Version="1.3.2" />
47+
<PackageReference Include="SharpZipLib" Version="1.4.2" />
4748
<PackageReference Include="Tedd.RandomUtils" Version="1.0.6" />
4849
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
4950
<PackageReference Include="Mapster" Version="7.4.0" />

Tests/GameFrameX.Tests/CompressTest.cs

Lines changed: 36 additions & 10 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)