Распаковка архива .tar.bz2 из командной строки - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток, Появилась следующая задача. Сервер под unix системой пишет файлы логов. Когда файл достигает размера 1 Gb, система запаковывает его в архив формата timestamp.tar.bz2. Моя задача по дате найти нужный архив, распаковать его, и парсить в поисках необходимой информации. Проблема возникла до смешного банальная, не могу распаковать этот архив под виндой. Пробовал zlibnet, ZipStorer, #ziplib. Такой формат они распаковать не могут. Или я не правильно пользуюсь? Пробовал через Rar.exe, от WinRAR. При попытке распаковать из командной строки выдает сообщение "is not RAR archive". Пробовал через 7zip, вот так:
                Process process = new Process();
                process.StartInfo.Arguments = " e -y \"" + pathSrc + "\" *.* -o\"" + pathDest + "\"";
                process.StartInfo.FileName = "7z.exe";
                process.Start();
                process.WaitForExit();
7zip ведет себя не совсем адекватно. Иногда распаковка проходит успешно, а бывает что выдает: "Error: неопознанная ошибка". По какой причине эта ошибка появляется, я так и не понял. Возможно из-за размера файла? Если кто знает, подскажите в чем дело. Или может есть другой распаковщик с поддержкой командной строки? Мне нужно только разархивирование.

Решение задачи: «Распаковка архива .tar.bz2 из командной строки»

textual
Листинг программы
private void unZip(string pathSrc, string pathDest)
        {
            try
            {
                using (var fs = File.OpenRead(pathSrc))
                {
                    using (var decompressor = new Ionic.BZip2.BZip2InputStream(fs))
                    {
                        using (var output = File.Create(pathDest))
                        {
                            byte[] buffer = new byte[2048];
                            int n;
                            while ((n = decompressor.Read(buffer, 0, buffer.Length)) > 0)
                            {
                                output.Write(buffer, 0, n);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы