Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/48: Рейтинг темы: голосов - 48, средняя оценка - 4.67
62 / 62 / 1
Регистрация: 23.01.2012
Сообщений: 254
1

Как программно распаковать Zip файл

01.04.2012, 20:27. Показов 8996. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли штатными средствами .net или на край виндовыми библиотеками стандаратными распаковать архив?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2012, 20:27
Ответы с готовыми решениями:

Программно распаковать zip файл
Необходимо распаковать MACHINEDATA.TT.ZIP файл. Использовав пример из...

Как распаковать архив (rar; zip; 7z)?
как программно распаковать архив? путь куда распаковывать архив находиться в текстовом поле. если в...

Программно упаковать файл в zip
здравствуйте. нужно программно упаковать файл в zip-архив. как это реализовать? Способ через...

Распаковать папки разной вложенности в Zip архиве
Здравствуйте, форумчане! Помогите пожалуйста с проблемой. Есть FTP сервер куда копируются zip...

12
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
01.04.2012, 21:06 2
Лучший ответ Сообщение было отмечено как решение

Решение

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    Private Sub Compress(ByVal fi As FileInfo)
        Using inFile As FileStream = fi.OpenRead()
            If (File.GetAttributes(fi.FullName) And FileAttributes.Hidden) _
                <> FileAttributes.Hidden And fi.Extension <> ".gz" Then
                Using outFile As FileStream = File.Create(fi.FullName + ".gz")
                    Using Compress As GZipStream = New GZipStream(outFile, CompressionMode.Compress)
                        inFile.CopyTo(Compress)
                        Console.WriteLine("Compressed {0} from {1} to {2} bytes.", _
                                          fi.Name, fi.Length.ToString(), outFile.Length.ToString())
 
                    End Using
                End Using
            End If
        End Using
    End Sub
 
    Private Sub Decompress(ByVal fi As FileInfo)
        Using inFile As FileStream = fi.OpenRead()
            Dim curFile As String = fi.FullName
            Dim origName = curFile.Remove(curFile.Length - fi.Extension.Length)
            Using outFile As FileStream = File.Create(origName)
                Using Decompress As GZipStream = New GZipStream(inFile, CompressionMode.Decompress)
                    'Decompress.CopyTo(outFile)
                    Console.WriteLine("Decompressed: {0}", fi.Name)
                End Using
            End Using
        End Using
    End Sub
 
 
    Sub Main2()
        Dim dirpath As String = "D:\нюкниги\нюкниги"
        Dim di As DirectoryInfo = New DirectoryInfo(dirpath)
        For Each fi As FileInfo In di.GetFiles()
            Compress(fi)
        Next
    End Sub
 
    Sub Main()
        Dim dirpath As String = "D:\нюкниги\нюкниги"
        Dim di As DirectoryInfo = New DirectoryInfo(dirpath)
        For Each fi As FileInfo In di.GetFiles("*.gz")
            Decompress(fi)
        Next
    End Sub
3
62 / 62 / 1
Регистрация: 23.01.2012
Сообщений: 254
01.04.2012, 21:12  [ТС] 3
Но всё равно чтото он с zip не дружит
0
169 / 149 / 14
Регистрация: 13.07.2011
Сообщений: 477
01.04.2012, 21:40 4
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
 
            Dim fsNoCompress As New FileStream("c:\nocompress", FileMode.Create)
            Dim rNoCompress As New BinaryWriter(fsNoCompress)
            Dim fsCompress As New FileStream("c:\compress", FileMode.Create)
            Dim CompressStream As New Compression.GZipStream(fsCompress, Compression.CompressionMode.Compress)
            Dim rCompress As New BinaryWriter(CompressStream)
            For i As Integer = 1 To 10000
                Dim RandomString As String = "adsfadfadsf"
                rNoCompress.Write(RandomString)
                rCompress.Write(RandomString)
            Next
            rNoCompress.Close()
            fsNoCompress.Close()
 
            rCompress.Close()
            fsCompress.Close()
 
            Debug.WriteLine("Compressed data from " & _
              My.Computer.FileSystem.GetFileInfo("c:\nocompress").Length & _
              " bytes to " & _
              My.Computer.FileSystem.GetFileInfo("c:\compress").Length & _
              " bytes.")
 
            Dim fsRead As New FileStream("c:\compress", FileMode.Open)
            Dim DecompressStream As New Compression.GZipStream(fsRead, Compression.CompressionMode.Decompress)
            'Dim r As New BinaryReader(DecompressStream)
            Dim r As New IO.StreamReader(DecompressStream)
            Debug.WriteLine("The compressed data looks like this: " & r.ReadToEnd)
            r.Close()
            fsRead.Close()
 
 
        Catch ex As Security.SecurityException
        Catch ex As AccessViolationException
 
        End Try
    End Sub
0
62 / 62 / 1
Регистрация: 23.01.2012
Сообщений: 254
02.04.2012, 12:05  [ТС] 5
Файл забился рандомным флудом из переменной
0
1717 / 1204 / 228
Регистрация: 23.12.2010
Сообщений: 1,541
02.04.2012, 16:51 6
тут: http://www.codeproject.com/Art... Files-Easy пошарь.
Вообще, там можно много чего накопать по запросу zip.
А Gzip лучше забудь - он все равно заточен под упаковку отдельных файлов, плюс не сохраняет расширение. Так что для распаковки надо знать имя исходного файла с расширением.
1
60 / 58 / 10
Регистрация: 16.02.2013
Сообщений: 146
06.04.2013, 17:54 7
eJ_Studio, я использую только события распаковки, Decompress, Main(), но на выходе путой файл с весом 0.
Если открыть строчку:
PureBasic
1
'Decompress.CopyTo(outFile)
как на сайте microsoft рекомендуют, тогда ругается на метод CopyTo, пишет что 'CopyTo' не является членом System.IO.Compression.GZipStream

P.S. работаю именно с архивом *.gz
0
1486 / 581 / 106
Регистрация: 26.03.2012
Сообщений: 1,028
07.04.2013, 01:12 8
Вот посмотри, выдрано из рабочего кода, я тут *.fb2.zip распаковывал / упаковывал
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
    Private Const FOF_MULTIDESTFILES As Int32 = 1               '
    Private Const FOF_CONFIRMMOUSE As Int32 = 2                 '
    Private Const FOF_SILENT As Int32 = 4                       'Не отображать диалоговое окно процесса.
    Private Const FOF_RENAMEONCOLLISION As Int32 = 8            'Дайть файлу новое имя при перемещать, копировать, переименовывать или операции, если файл с целевым именем уже существует.
    Private Const FOF_NOCONFIRMATION As Int32 = 16              'Ответ «Да для всех» для любого диалогового окна, которое отображается.
    Private Const FOF_WANTMAPPINGHANDLE As Int32 = 32           '
    Private Const FOF_ALLOWUNDO As Int32 = 64                   'Сохранить отменить информации, если это возможно.
    Private Const FOF_FILESONLY As Int32 = 128                  'Выполнять операции с файлами, только если шаблон имени файла (*.*) Не указан.
    Private Const FOF_SIMPLEPROGRESS As Int32 = 256             'Показать диалоговое окно хода, но не показывать имен файлов.
    Private Const FOF_NOCONFIRMMKDIR As Int32 = 512             'Не подтвердить создание нового каталога, если операция требует, чтобы быть создан.
    Private Const FOF_NOERRORUI As Int32 = 1024                 'Не отображать пользовательский интерфейс, если произошла ошибка.
    Private Const FOF_NOCOPYSECURITYATTRIBS As Int32 = 2048     'Версия 4.71. Не пытайтесь копировать атрибуты безопасности файлов.
    Private Const FOF_NORECURSION As Int32 = 4096               'Только работать в локальном каталоге. Не рекурсивно в подкаталогах.
    Private Const FOF_NO_CONNECTED_ELEMENTS As Int32 = 8192     'Версия 5.0. Не копируйте файлы, связанные группы. Только копировать указанные файлы.
    Private Const FOF_WANTNUKEWARNING As Int32 = 16384
 
    Private Sub Zip(ByVal Folder As String, ByVal ZipFile As String)
        Dim ZipHeader As Byte() = New Byte() {80, 75, 5, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
        Dim fs As FileStream = File.Create(ZipFile)
        fs.Write(ZipHeader, 0, ZipHeader.Length)
        fs.Flush()
        fs.Close()
        fs = Nothing
        Dim sh As New Shell32.Shell()
        Dim input As Shell32.Folder = sh.NameSpace(Folder) 'Директория,которую хотим упаковать C:\2012
        Dim output As Shell32.Folder = sh.NameSpace(ZipFile) 'Адрес к архиву в который хотим упаковать C:\2012.zip
        Try
            output.CopyHere(input.Items, 4)
        Catch
            IO.File.Copy(Folder & "\" & IO.Path.GetDirectoryName(Folder), LibPath & "\!\" & IO.Path.GetFileName(Folder))
        End Try
    End Sub
 
    Private Function UnZip(ByVal ZipFile As String, Folder As String) As ArrayList
        Dim UnZipFiles() As IO.FileInfo
        Dim Tmp As New IO.DirectoryInfo(Folder)
        Dim Files As New ArrayList
        Call MakePath(Folder)
        Dim sh As New Shell32.Shell()
        Dim output As Shell32.Folder = sh.NameSpace(Folder) 'Директория в которую хотим распаковать
        Dim input As Shell32.Folder = sh.NameSpace(ZipFile) 'Адрес к архиву из которого всё будет извлечено d:\архив.zip
        output.CopyHere(input.Items, FOF_SILENT + FOF_NOERRORUI)
        UnZipFiles = Tmp.GetFiles("*.fb2*", IO.SearchOption.AllDirectories)
        For Each UnZipFile In UnZipFiles
            Files.Add(UnZipFile.FullName)
        Next
        Return Files
    End Function
1
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
07.04.2013, 09:51 9
PAnT0P, Здесь проблема как видно с распаковкой архива с расширением .gz, а не .zip...

Добавлено через 2 минуты
Евгений12, выложи сюда архив в этом расширениее чтобы попробовать
0
60 / 58 / 10
Регистрация: 16.02.2013
Сообщений: 146
07.04.2013, 18:21 10
Вот ссылка на загрузку именно того архива с которым я работаю (архив - 27 мб, файл в архиве - 117 мб):
http://cioss.coas.oregonstate.... wks.dat.gz
0
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
07.04.2013, 18:44 11
возможно стандартные средства не работаею с расширением такого архива и необходимо подключать распаковку в фоновом режиме через установленные архиваторы. Например 7z бесплатный архиватор и на работе его смело можно стаивить. Тогда для распаковки примерно такой код будет:
Visual Basic
1
2
'Распаковываем
ProgID = Shell("C:\Program Files\7-Zip\7z.exe e -aou """ & MyPath & MyName & """ -o""" & MyPath & "", vbHide)
это я а аксесе так распаковываю архивы. На VB наверно похожий есть
1
1486 / 581 / 106
Регистрация: 26.03.2012
Сообщений: 1,028
08.04.2013, 02:31 12
Цитата Сообщение от emenem97 Посмотреть сообщение
PAnT0P, Здесь проблема как видно с распаковкой архива с расширением .gz, а не .zip...
В названии темы указан zip
0
62 / 62 / 1
Регистрация: 23.01.2012
Сообщений: 254
08.04.2013, 11:18  [ТС] 13
Цитата Сообщение от emenem97 Посмотреть сообщение
PAnT0P, Здесь проблема как видно с распаковкой архива с расширением .gz, а не .zip...

Добавлено через 2 минуты
Евгений12, выложи сюда архив в этом расширениее чтобы попробовать
Проблема с zip была решена ещё в том году,и её решение в faq.Не стоит потрошить старые темы.С gz могу сказать одно,или стандартыми средставами .net распаковать или Ionic.zip.Кстати вот ссылка на него http://dotnetzip.codeplex.com/
1
08.04.2013, 11:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2013, 11:18
Помогаю со студенческими работами здесь

Как скачать и разархивировать ZIP программно
Делаю лаунчер Minecraft. Сделал свой клиент, запаковал в Client.zip, залил на хост... А лаунчер!...

Зная путь к папке с zip архивами распаковать все архивы в свои папки
есть папка, в которой лежат архивы. необходимо при нажатии на кнопку извлечь все архивы(каждый...

Как распаковать файл из архива внутри архива? Ionic.Zip
Всем привет! Пишу программу для распаковки файла &quot;Main.xml&quot; в ZIP архиве &quot;Test2&quot; в ZIP архиве...

Как распаковать ZIP архив и поместить содержимое в List<>
Есть ZIP архив с множеством файлов (текстовых(txt,html,htm,cs,cpp), и картинок(png,jpeg)) Как его...

Распаковать zip строку
Смотрим на заголовок - именно СТРОКУ, а не файл!!! Есть строка string pack= &quot;xњмЅ‹rG’(ъ+Flњs#(є&quot;...

Программно распаковать архив
Подскажите как программно распаковать архив rar в скрытом режиме и с заменой файлов(если такие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru