это мой первый вопрос здесь, так что терпите меня.
То, что я собираюсь сделать, это просто создать базовый архив .zip на С#. Я попытался использовать встроенный класс GZipStream
.NET, и мне удалось это сделать, но у меня возникла проблема, заключающаяся в том, что я не могу назвать файл «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. Я просмотрел вспомогательные библиотеки, а также библиотеки 7-zip, и кажется, что эту библиотеку можно использовать для сжатия файла с помощью обычного алгоритма «ZIP». Я просто не могу понять, как это сделать. Я заметил настройки свойств в нескольких местах, но я не могу найти документацию или поиск в Google, чтобы сказать мне, где это установить.
Я понимаю, что, вероятно, есть лучшие способы сделать это и что я просто что-то упускаю, но я не могу сидеть и бороться с такой якобы легкой задачей вечно. Любая помощь будет принята с благодарностью.
7za a -tzip D:\myFile.zip D:\MyPath\*.*
- person alex   schedule 05.05.2011