Я скачал исходный код SharpCompress и создал простое консольное приложение для распаковки небольшого файла .xz. Следуя нескольким различным примерам на сайте github и другим примерам здесь на stackoverflow, я не могу найти ни комбинаций, которые действительно работают для «разархивирования» файла .xz, ни каких-либо инструкций или документации. Кто-нибудь смог "разархивировать" файл .xz с помощью SharpCompress?
using (Stream stream = File.OpenRead(@"C:\temp\ot.xz"))
{
using (var reader = ReaderFactory.Open(stream))
{
while (reader.MoveToNextEntry())
{
if (!reader.Entry.IsDirectory)
{
Console.WriteLine(reader.Entry.Key);
reader.WriteEntryToDirectory(@"C:\temp", new ExtractionOptions()
{
ExtractFullPath = true,
Overwrite = true
});
}
}
}
}
Этот конкретный код выдает исключение 'Невозможно определить тип сжатого потока. Поддерживаемые форматы считывателя: Zip, GZip, BZip2, Tar, Rar, LZip, XZ '
Следующий код работает лучше (не выдает ошибку), но значение Entry.Key является неожиданным или бессмысленным.
using (Stream stream = File.OpenRead(@"C:\temp\ot.xz"))
{
var xzStream = new XZStream(stream);
using (var reader = TarReader.Open(xzStream))// ReaderFactory.Open(stream))
{
while (reader.MoveToNextEntry())
{
if (!reader.Entry.IsDirectory)
{
Console.WriteLine(reader.Entry.Key);
}
}
}
}