using System;
using System.IO;
using System.Text;
namespace Test
{
class Program
{
static void Main(string[] args)
{
string input = "你好啊 ";
var bytes = Encoding.UTF8.GetBytes(input);
MemoryStream inStream = new MemoryStream(bytes);
MemoryStream outStream = new MemoryStream();
Zip(inStream, outStream);
outStream.Position = 0;
bytes = new byte[outStream.Length];
outStream.Read(bytes, 0, bytes.Length);
string str = Convert.ToBase64String(bytes);
Console.WriteLine($"压缩后Base64编码 {str}");
bytes = Convert.FromBase64String(str);
inStream = new MemoryStream(bytes);
outStream = new MemoryStream();
UnZip(inStream, outStream);
outStream.Position = 0;
var sr = new StreamReader(outStream);
str = sr.ReadToEnd();
Console.WriteLine($"解压后内容 {str}");
}
static void Zip(Stream inStream, Stream outStream)
{
SevenZip.Compression.LZMA.Encoder encoder = new SevenZip.Compression.LZMA.Encoder();
encoder.WriteCoderProperties(outStream);
Int64 fileSize = inStream.Length;
for (int i = 0; i < 8; i )
outStream.WriteByte((Byte)(fileSize >> (8 * i)));
encoder.Code(inStream, outStream, -1, -1, null);
}
static void Zip(string inputName, string outputName)
{
var inStream = new FileStream(inputName, FileMode.Open, FileAccess.Read);
var outStream = new FileStream(outputName, FileMode.Create, FileAccess.Write);
Zip(inStream, outStream);
}
static void UnZip(string inputName, string outputName)
{
var inStream = new FileStream(inputName, FileMode.Open, FileAccess.Read);
var outStream = new FileStream(outputName, FileMode.Create, FileAccess.Write);
UnZip(inStream, outStream);
}
static void UnZip(Stream inStream, Stream outStream)
{
byte[] properties = new byte[5];
if (inStream.Read(properties, 0, 5) != 5)
throw (new Exception("input .lzma is too short"));
SevenZip.Compression.LZMA.Decoder decoder = new SevenZip.Compression.LZMA.Decoder();
decoder.SetDecoderProperties(properties);
long outSize = 0;
for (int i = 0; i < 8; i )
{
int v = inStream.ReadByte();
if (v < 0)
throw (new Exception("Can't Read 1"));
outSize |= ((long)(byte)v) << (8 * i);
}
long compressedSize = inStream.Length - inStream.Position;
decoder.Code(inStream, outStream, compressedSize, outSize, null);
}
}
}
资源文件列表
SevenZip-master/.gitattributes , 2518
SevenZip-master/.gitignore , 4305
SevenZip-master/.vs/SevenZip/DesignTimeBuild/.dtbcache , 299804
SevenZip-master/.vs/SevenZip/v16/.suo , 20480
SevenZip-master/.vs/SevenZip/v16/Server/sqlite3/db.lock , 0
SevenZip-master/.vs/SevenZip/v16/Server/sqlite3/storage.ide , 454656
SevenZip-master/CODE_OF_CONDUCT.md , 3210
SevenZip-master/CONTRIBUTING.md , 13
SevenZip-master/LICENSE , 1066
SevenZip-master/README.md , 133
SevenZip-master/SevenZip/bin/Debug/netstandard2.0/SevenZip.deps.json , 1423
SevenZip-master/SevenZip/bin/Debug/netstandard2.0/SevenZip.dll , 55808
SevenZip-master/SevenZip/bin/Debug/netstandard2.0/SevenZip.pdb , 36376
SevenZip-master/SevenZip/Common/CommandLineParser.cs , 6642
SevenZip-master/SevenZip/Common/CRC.cs , 1105
SevenZip-master/SevenZip/Common/InBuffer.cs , 1318
SevenZip-master/SevenZip/Common/OutBuffer.cs , 897
SevenZip-master/SevenZip/Compress/LZ/IMatchFinder.cs , 552
SevenZip-master/SevenZip/Compress/LZ/LzBinTree.cs , 9270
SevenZip-master/SevenZip/Compress/LZ/LzInWindow.cs , 3779
SevenZip-master/SevenZip/Compress/LZ/LzOutWindow.cs , 2104
SevenZip-master/SevenZip/Compress/LZMA/LzmaBase.cs , 2696
SevenZip-master/SevenZip/Compress/LZMA/LzmaDecoder.cs , 11677
SevenZip-master/SevenZip/Compress/LZMA/LzmaEncoder.cs , 43744
SevenZip-master/SevenZip/Compress/LzmaAlone/LzmaAlone.cs , 10351
SevenZip-master/SevenZip/Compress/LzmaAlone/LzmaBench.cs , 9438
SevenZip-master/SevenZip/Compress/RangeCoder/RangeCoder.cs , 3956
SevenZip-master/SevenZip/Compress/RangeCoder/RangeCoderBit.cs , 3155
SevenZip-master/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs , 3368
SevenZip-master/SevenZip/ICoder.cs , 3605
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.AssemblyInfo.cs , 1007
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.AssemblyInfoInputs.cache , 42
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.assets.cache , 88
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.csproj.CoreCompileInputs.cache , 42
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.csproj.FileListAbsolute.txt , 731
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.csprojAssemblyReference.cache , 82212
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.dll , 55808
SevenZip-master/SevenZip/obj/Debug/netstandard2.0/SevenZip.pdb , 36376
SevenZip-master/SevenZip/obj/project.assets.json , 11060
SevenZip-master/SevenZip/obj/SevenZip.csproj.nuget.cache , 149
SevenZip-master/SevenZip/obj/SevenZip.csproj.nuget.dgspec.json , 1686
SevenZip-master/SevenZip/obj/SevenZip.csproj.nuget.g.props , 1167
SevenZip-master/SevenZip/obj/SevenZip.csproj.nuget.g.targets , 681
SevenZip-master/SevenZip/SevenZip.csproj , 138
SevenZip-master/SevenZip.sln , 1555
SevenZip-master/Test/obj/project.assets.json , 2131
SevenZip-master/Test/obj/Test.csproj.nuget.cache , 149
SevenZip-master/Test/obj/Test.csproj.nuget.dgspec.json , 3143
SevenZip-master/Test/obj/Test.csproj.nuget.g.props , 1167
SevenZip-master/Test/obj/Test.csproj.nuget.g.targets , 294
SevenZip-master/Test/Program.cs , 2909
SevenZip-master/Test/Test.csproj , 263