Я пишу приложение Winform в .NET 3.5, и мне нужно разархивировать файл .rar или .zip.
Я нашел много вещей, но я не нашел ни одной третьей стороны.
Я не мог перейти на .NET 4 или .NET 4.5.
Благодарим вас за помощь. Horbert
Я пишу приложение Winform в .NET 3.5, и мне нужно разархивировать файл .rar или .zip.
Я нашел много вещей, но я не нашел ни одной третьей стороны.
Я не мог перейти на .NET 4 или .NET 4.5.
Благодарим вас за помощь. Horbert
.NET framework не поддерживает файлы .RAR и не поддерживает Zip файлы до .NET 4.5.
Если вы хотите поддерживать .ZIP(или .RAR) в .NET 3.5, вам понадобится стороннее решение. Библиотека DotNetZip, например, поддерживает .NET 3.5 и полностью функциональна для обработки файлов .ZIP.
Существуют коммерческие продукты, которые поддерживают RAR, например Chilkat RAR.
Как насчет http://www.codeproject.com/Articles/645214/Compress-Decompress-Zip-Files-w
Не лучшее решение, но хорошо работает, если вам нужны базовые функции zip/unzip.
Отказ от ответственности: я автор статьи.
Если вам нужно только распаковать zip файл, вам не нужно добавлять внешнюю стороннюю библиотеку.
Только вам нужно добавить ссылку на Средства управления Microsoft Shell и автоматизацию со вкладки COM в диспетчере ссылок в Visual Studio.
private static void Unzip(String sourceFile,String destination)
{
Shell32.ShellClass sc = new Shell32.ShellClass();
Shell32.Folder SrcFlder = sc.NameSpace(sourceFile);
Shell32.Folder DestFlder = sc.NameSpace(destination);
Shell32.FolderItems items = SrcFlder.Items();
DestFlder.CopyHere(items, 20);
}
При этом вам не нужно распространять дополнительный файл dll с вашим приложением.
Собственно,.NET 3.5 делает .zip файлы, используя DeflateStream. Вы должны обрабатывать заголовки самостоятельно, но PKWare опубликовала спецификацию, и вы можете создавать структуры и использовать потоки.
Нет необходимости в стороннем коде... но вам придется подходить к нему в более традиционной, старой школьной манере. Они не совсем расклеивают себя.