这是我在这里的第一个问题,所以请耐心等待。
我的目标是在 C# 中创建一个基本的 .zip 存档。我曾尝试使用 .NET 的内置GZipStream
类并设法做到这一点,但是我遇到的问题是我无法将文件命名为“usercode.zip”,而存档文件不会丢失其扩展名。由于限制,我无法让我的程序将这些文件创建为“usercode.trf.zip”,这是我找到的将文件名的扩展名完整保留在存档中的唯一方法。
我已经尝试使用许多其他压缩库,但我似乎无法让它们正常工作或按我想要的方式工作。
我遇到了一个SevenZipHelper
库,它提供了一些漂亮的函数来使用 LZMA(或 7-zip)库来压缩文件。
我正在使用的代码如下所示:
//Take the BF file and zip it, using 7ZipHelper
BinaryReader bReader = new BinaryReader(File.Open(pFileName, FileMode.Open));
byte[] InBuf = new byte[Count];
bReader.Read(InBuf, 0, InBuf.Length);
Console.WriteLine("ZIP: read for buffer length:" + InBuf.Length.ToString());
byte[] OutBuf = SevenZip.Compression.LZMA.SevenZipHelper.Compress(InBuf);
FileStream BZipFile = new FileStream(pZipFileName, FileMode.OpenOrCreate, FileAccess.Write);
BZipFile.Seek(0, SeekOrigin.Begin);
BZipFile.Write(OutBuf, 0, OutBuf.Length);
BZipFile.Close();
这会使用 7-zip 算法巧妙地创建一个压缩文件。问题是我不能保证使用这个程序的客户端可以访问 7-zip,所以文件必须是正常的 zip 算法。我已经浏览了 helper- 以及 7-zip 库,似乎可以使用这个库来使用普通的“ZIP”算法压缩文件。我似乎无法弄清楚如何做到这一点。我注意到一些地方的属性设置,但我找不到任何文档或谷歌搜索告诉我在哪里设置它。
我意识到可能有更好的方法来做到这一点,而我只是错过了一些东西,但我不能坐下来永远为这样一个本应简单的任务而奋斗。任何帮助将不胜感激。