Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613

Запаковать файл в архив (.zip)

18.02.2015, 13:48. Показов 6646. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
необходимо запаковать файлы, путь к папке, в которой лежат файлы берется из текстового поля.
пример, который указан в FAQ у меня не работает(
так же необходимо вывести ход запаковки в ProgressBar, и по возможно в Label оставшиеся время запаковки.
Заранее Благодарю! Спасибо!
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.02.2015, 13:48
Ответы с готовыми решениями:

Запаковать файл в .zip архивы (Создание пустого файла архива)
Здравствуйте. Нужно архивировать файлы с каталога (запаковать) Как заорхивировать я знаю (в FAQ есть :)) Проблема в том, что файл с...

Не распаковывается архив zip
Помогите ! Пытаюсь разархивировать .zip архив. Скрипт для разархивации я нашёл на этом же форуме там где visual basic .net faq , пост от...

Прямая запись в zip-архив
Не подскажите чуток примерно с какими командами работать и есть ли такая возможность записать объект image или bitmap сразу в zip архив с...

8
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
18.02.2015, 16:13
Ну если только ОДИН файл и известно его имя с расширением, то GZipStream может помочь
Кликните здесь для просмотра всего текста
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
    Public Sub FileCompress(ByVal sourceFile As String, _
          ByVal destinationFile As String)
       ' ----- Decompress a previously compressed string.
       '       First, create the input file stream.
       Dim sourceStream As New FileStream( _
          sourceFile, FileMode.Open, FileAccess.Read)
 
       ' ----- Create the output file stream.
       Dim destinationStream As New FileStream( _
       destinationFile, FileMode.Create, FileAccess.Write)
 
       ' ----- Bytes will be processed by a compression
       '       stream.
       Dim compressedStream As New GZipStream( _
          destinationStream, CompressionMode.Compress, True)
 
       ' ----- Process bytes from one file into the other.
       Const BlockSize As Integer = 4096
       Dim buffer(BlockSize) As Byte
       Dim bytesRead As Integer
       Do
          bytesRead = sourceStream.Read(buffer, 0, BlockSize)
          If (bytesRead = 0) Then Exit Do
          compressedStream.Write(buffer, 0, bytesRead)
       Loop
 
       ' ----- Close all the streams.
       sourceStream.Close( )
       compressedStream.Close( )
       destinationStream.Close( )
    End Sub

Кликните здесь для просмотра всего текста
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
    Public Sub FileDecompress(ByVal sourceFile As String, _
          ByVal destinationFile As String)
       ' ----- Compress the entire contents of a file, and
       '       store the result in a new file. First, get
       '       the files as streams.
       Dim sourceStream As New FileStream( _
          sourceFile, FileMode.Open, FileAccess.Read)
       Dim destinationStream As New FileStream( _
          destinationFile, FileMode.Create, FileAccess.Write)
 
       ' ----- Bytes will be processed through a
       '       decompression stream.
       Dim decompressedStream As New GZipStream( _
          sourceStream, CompressionMode.Decompress, True)
 
       ' ----- Process bytes from one file into the other.
       Const BlockSize As Integer = 4096
       Dim buffer(BlockSize) As Byte
       Dim bytesRead As Integer
       Do
          bytesRead = decompressedStream.Read(buffer, _
             0, BlockSize)
          If (bytesRead = 0) Then Exit Do
          destinationStream.Write(buffer, 0, bytesRead)
       Loop
 
       ' ----- Close all the streams.
       sourceStream.Close( )
       decompressedStream.Close( )
       destinationStream.Close( )
    End Sub

То он может так упаковать файл (например уже единожды упакованный), что архив станет больше оригинала
С Памирычем уже пробовали...
Код, что я привел, не мой, а из умной книжки, а ссылка на МСДН содержит также пример кода
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
18.02.2015, 16:21  [ТС]
Юпатов Дмитрий, в папке лежит один файл, но имя у него может быть разное
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
18.02.2015, 16:31
Цитата Сообщение от adb420 Посмотреть сообщение
один файл
это хорошо
Цитата Сообщение от adb420 Посмотреть сообщение
имя у него может быть разное
нестрашно, архиву давай имя файла с расширением + .gzip
потом просто от имени архива отрежешь .gzip и получишь имя упакованного файла.
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
19.02.2015, 11:58  [ТС]
Юпатов Дмитрий, буду пробовать!) спасибо)

Добавлено через 19 часов 25 минут
Юпатов Дмитрий,
нашел такой код на просторах интернета, с использованием библиотеки Ionic.Zip.dll:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Imports System.IO
Imports System.IO.Compression
Imports Ionic.Zip
 
  Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click
 
        Try
            Using zip As ZipFile = New ZipFile
                zip.AddFile("c:\ren\1.txt", "")
                zip.Save("C:\ren\MyZipFile.a78")
            End Using
        Catch ex1 As Exception
            Console.Error.WriteLine("exception: {0}", ex1.ToString)
        End Try
 
    End Sub
тут указывается четкий путь до файла, а если я знаю только расширение файла, находящегося в папке C:\ren, который нужно запаковать. побывал ставить
VB.NET
1
zip.AddFile("c:\ren\*.txt", "")
все равно не работает. как можно изменить код, что бы указать ему только папку откуда нужно запаковать файл?
0
 Аватар для Pooh
408 / 360 / 82
Регистрация: 07.10.2009
Сообщений: 558
19.02.2015, 12:27
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Imports System.IO
Imports System.IO.Compression
Imports Ionic.Zip
 
  Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click
        Dim fileName As String =Directory.GetFiles("c:\ren\", "*.txt")(0)
        Try
            Using zip As ZipFile = New ZipFile
                zip.AddFile(fileName, "")
                zip.Save("C:\ren\MyZipFile.a78")
            End Using
        Catch ex1 As Exception
            Console.Error.WriteLine("exception: {0}", ex1.ToString)
        End Try
 
    End Sub
Может как-то так? Писал на коленке, могут быть ошибки.
2
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
19.02.2015, 12:34
изучай IO.Directory, чтобы получить список файлов в указанной папке. Ну а дальше будешь иметь имя файла и путь к папке, где он лежит.
Цитата Сообщение от adb420 Посмотреть сообщение
нашел такой код на просторах интернета, с использованием библиотеки Ionic.Zip.dll
Это, конечно, штука мощная, но с приложением придется таскать и библиотеку. Стоит ли ради одного файла в архиве?
1
8 / 8 / 1
Регистрация: 09.10.2013
Сообщений: 613
19.02.2015, 12:42  [ТС]
Pooh, спасибо, работает!
0
 Аватар для vova2112
147 / 135 / 34
Регистрация: 28.02.2014
Сообщений: 165
19.02.2015, 13:19
Можно с помощью средств Net4.0:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Imports System.IO.Compression
Imports System.IO.Compression.FileSystem
 
  Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click
        Dim Fname$ = "Test.zip", Path1$ = "D:\", Path2$ = "C:\Folder_with_File\"
'Упаковка
        If Not IO.File.Exists(Path1 & Fname) Then
            ZipFile.CreateFromDirectory(Path2, Path1 & Fname, 0, False)
        End If
'Распаковка
        Using zip As ZipArchive = ZipFile.Open(Path1 & Fname, 0)
            zip.ExtractToDirectory(Path1 & "Proba")
        End Using
  End Sub
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.02.2015, 13:19
Помогаю со студенческими работами здесь

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

Как добавить файлы с существующий .zip архив
Нужно добавить все файлы, из определенной папки в .zip архив, использую Ionic.Zip. Используя этот код, архив создается каждый раз новый. ...

Добавление файлов непосредственно в архив zip, минуя их промежуточное создание
Здравствуйте, допустим существует определённое количество папок, с разного рода данными (txt, Jpeg, doc и.т.д) которые необходимо...

Извлечь из zip архива определенную папку. Запаковать ее в другой архив
Есть два zip архива, одинакового содержимого. Нужно из первого архива извлечь определенную папку, например с названием "RES" и...

Как с использованием 7-Zip запаковать файлы и каталоги в архив и распаковать их из архива?
Научите меня 7z паковать! Документация выводится в консоль, но всё же пробами и ошибками долго изучать. Меня интересует как можно...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru