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