#c# #7zip #sevenzipsharp
#c# #7zip #sevenzipsharp
Вопрос:
Я пытаюсь прочитать текстовые файлы из архива .7z
using (StreamReader reader = new StreamReader(f "//" file.FileName))
но я получаю эту ошибку:
Необработанное исключение типа ‘System.IO.DirectoryNotFoundException’ произошло в mscorlib.dll Дополнительная информация: Не удалось найти часть пути ‘E:1.7z123New Текст Document.txt «.
if (IntPtr.Size == 8) //x64
{
SevenZip.SevenZipExtractor.SetLibraryPath(@"C:Program Files7-Zip7z.dll");
}
else //x86
{
SevenZip.SevenZipCompressor.SetLibraryPath(@"C:Program Files (x86)7-Zip7z.dll");
}
string f = "E://1.7z";
SevenZipExtractor extractor = new SevenZipExtractor(f);
foreach (ArchiveFileInfo file in extractor.ArchiveFileData)
{
// Console.WriteLine("{0} : {1} Bytes", file.FileName, file.Size);
if (file.FileName.EndsWith(".txt", StringComparison.OrdinalIgnoreCase))
{
using (StreamReader reader = new StreamReader(f "//" file.FileName))
{
while (reader.Peek() >= 0)
{
Console.WriteLine("{0} ", reader.ReadLine());
}
}
}
}
Комментарии:
1. вы используете неправильный путь
2.
f
указывает на файл, а не на папку. Вы не можете обрабатывать архивированный файл, как если бы это была папка3. Вы используете SevenZipExtractor только для чтения имени файла, а не для извлечения чего-либо. Я не знаком с библиотекой, но это кажется неправильным.
4. используя (StreamReader reader = новый StreamReader(«C: \» file. Имя файла)) используйте это
Ответ №1:
Чтобы использовать SevenZipExtractor для извлечения файла, используйте следующее:
String file = @"\yourdirectory\yourzipfile.zip";
String directoryToExtract = @"\yourdirectorytoextract"
using (SevenZip.SevenZipExtractor extr = new SevenZip.SevenZipExtractor(file))
{
Console.WriteLine("Extracting File...");
extr.ExtractArchive(directoryToExtract);
System.IO.File.Delete(file);
}