Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
1

Разархивировать файл с новым именем

01.10.2014, 22:48. Показов 2037. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Разархивирую файл zip стандартной библиотекой shell

VB.NET
1
2
3
4
Dim sh As New Shell32.Shell()
Dim output As Shell32.Folder = sh.NameSpace(path2)   'Куда
Dim inp As Shell32.Folder = sh.NameSpace(path1) 'Файл zip
output.CopyHere(inp.Items, 16)
При этом имя файла разархивированного получается исходное (которое запаковано в zip архиве), а мне нужно "свое" вписать.
Подскажите, какой параметр в коде выше нужно дрписать, чтобы файл извлекался с желанным именем?
P.S. Хотел переименовать его после извлечения, но не знаю как программно ухватиться за его имя после распаковки (которое запаковано в zip архиве), т.к. в каталоге куча других файлов.

Либо прошу посоветовать другой код, который мог бы выполнить мою задачу, с использованием бесплатной библиотеки
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2014, 22:48
Ответы с готовыми решениями:

"Пакетный файл, который переименовывает заданный файл в файл с новым именем и прежним расширением..."
Пакетный файл, который переименовывает заданный файл в файл с новым именем и прежним расширением,...

"Пакетный файл, который переименовывает заданный файл в файл с новым именем и прежним расширением..."
Здравствуйте, помогите пожалуйста с решением задания, не могу ни как разобраться((( Пакетный...

Как создать поддиректорию и поместить в неё файл с новым именем?
#!/bin/bash DestFolder=${HOME}/doc SourceFolder=/usr/share/doc LIST=$(find $SourceFolder...

Запись списка в файл под тем же или новым именем
Программа должна содержать меню и ввод-вывод в окна на экране. Необходимо предусмотреть контроль...

16
121 / 114 / 62
Регистрация: 27.07.2014
Сообщений: 225
01.10.2014, 23:30 2
emenem97, можешь разархивировать Zip'ом из Framework 4.0 или с помощью сторонней библиотеки DotNetZip
1
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
01.10.2014, 23:38  [ТС] 3
Цитата Сообщение от Hemicide Посмотреть сообщение
Zip'ом из Framework 4.0
3.5 нужен Framework. Не подходит
Цитата Сообщение от Hemicide Посмотреть сообщение
с помощью сторонней библиотеки DotNetZip
Пример сможете привести? На сайте документация по английски, я и по русски не уверен что понял бы как построить
0
121 / 114 / 62
Регистрация: 27.07.2014
Сообщений: 225
01.10.2014, 23:41 4

Не по теме:

Примеры были на форуме, пофиксили


Если до завтра дождёшься, покажу-расскажу.
1
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
01.10.2014, 23:49  [ТС] 5
Цитата Сообщение от Hemicide Посмотреть сообщение
Примеры были на форуме
сколько ни искал, не нашел пример, в котором файл разархивируется с нужным именем, Поэтому тему и создал. В идеале бы использовать shell, добавить в код выше параметр который отвечает за "новое" имя, если такое возможно. Не хочется dll тягать с программой, инсталяционного пакета не будет

Добавлено через 24 секунды
Цитата Сообщение от Hemicide Посмотреть сообщение
Если до завтра дождёшься, покажу-расскажу.
Думаю не найду. Если найду, обязательно отпишусь в теме
0
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
02.10.2014, 00:17 6
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Использую эту библиотеку, работает нормально
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try
                {
                    using (ZipFile zip = new ZipFile("_zip.zip", Encoding.UTF8))
                    {
                        foreach (ZipEntry ext in zip)
                        {
                            ext.Extract(Environment.CurrentDirectory, ExtractExistingFileAction.OverwriteSilently);
                        }
                    }
                //    Application.Restart();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    throw;
                }
2
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
02.10.2014, 00:32 7
Не заметил, что файл не загрузился, вот архивом
Вложения
Тип файла: rar Ionic.Zip.rar (263.0 Кб, 10 просмотров)
0
1390 / 325 / 45
Регистрация: 16.04.2013
Сообщений: 775
Записей в блоге: 2
02.10.2014, 03:26 8
emenem97,
-----------
Вложения
Тип файла: rar XZip.dll.rar (130.4 Кб, 8 просмотров)
1
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
02.10.2014, 22:12  [ТС] 9
Спасибо всем за помощь Остановился на том, что пошел другой дорогой. Не хотел использовать сторонние библиотеки хоть и бесплатные. Жаль стандартной нельзя переименовывать

Добавлено через 38 минут
Парни вот беда случилось . Все дописал, протестил на домашнем 4,5 Fram Windows 7_64. Теперь меняю режим на Fram 3,5 (для работы) и программа работать не хочет, мол interop SHELL32 для более поздней версии Fram. Как быть подскажите? Только стороннюю библиотеку zip использовать?

Добавлено через 54 минуты
edward_freedom, проблемка с твоей бмблиотекой, посмотри пож-та. Добавил библиотеку в ссылки. Далее код пишу:
Кликните здесь для просмотра всего текста
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Imports Ionic.Zip
Imports System.Text
 
Public Class Form1
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Try
            Using zip As New ZipFile("D:\Файл.zip", Encoding.UTF8)
                For Each ext As ZipEntry In zip
                    ext.Extract(Environment.CurrentDirectory, ExtractExistingFileAction.OverwriteSilently)
                Next
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message)
            Throw
        End Try
 
        MsgBox("Готово")
    End Sub
End Class
Вроде бы все нормально, но сам файл я не нахожу. Куда его разархивировал и какой параметр в коде за путь и имя ответственный не пойму
0
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
02.10.2014, 23:12 10
emenem97,
VB.NET
1
 ext.Extract("D:\test", ExtractExistingFileAction.OverwriteSilently)
В моем примере Environment.CurrentDirectory распаковывает в папку с .exe
1
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
03.10.2014, 17:49 11
Цитата Сообщение от emenem97 Посмотреть сообщение
Как быть подскажите?
Reference на библиотеку поменять?
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
03.10.2014, 18:36  [ТС] 12
Цитата Сообщение от Qwertiy Посмотреть сообщение
Reference на библиотеку поменять?
Подробней можно?
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
03.10.2014, 18:41 13
Правой кнопкой по проекту, add reference.
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
03.10.2014, 18:44  [ТС] 14
Qwertiy, Добавить ссылку -> Выбрать shell32 делал.
На Fram 4.5 работает, при изменении свойства на Fram 3.5 не работает
Прошу подробней расписать что мне нужно, чтобы стандартной библиотекой мог распаковывать zip архивы
0
833 / 641 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
03.10.2014, 19:00 15
А если сначала выбрать 3.5, а потом добавлять?
Я не в курсе про сборку Shell32. Возможно, потом гляну.
0
1302 / 508 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
03.10.2014, 19:51  [ТС] 16
Цитата Сообщение от Qwertiy Посмотреть сообщение
А если сначала выбрать 3.5, а потом добавлять?
да какая разницы. Видимо 3,5 не поддерживает архивы. Хотел наверняка убедиться у тех кто знает. А пока сделаю по примеру edward_freedom

Добавлено через 35 минут
edward_freedom, есть два вопроса по коду. Прошу подсказать:
1) Какая кодировка должна быть? Encoding.Default, Encoding.UTF8, Encoding.UTF32 - иероглифы выдает
2) Название файла я не могу выбирать, только путь. Есть возможность выбора названия файла ?
1
1568 / 1447 / 303
Регистрация: 01.10.2011
Сообщений: 2,636
03.10.2014, 20:17 17
Лучший ответ Сообщение было отмечено Серж_87 как решение

Решение

emenem97, Глянь тут, там много примеров. Я когда использовал, сразу весь архив распаковывал, так что как один файл только не в курсе.
Можно еще, здесь цикл проходит все файлы, можно сравнить по названию и нужный разархивировать
VB.NET
1
2
3
For Each ext As ZipEntry In zip
                    MessageBox.Show(ext.FileName)
                Next
2
03.10.2014, 20:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2014, 20:17
Помогаю со студенческими работами здесь

Дан файл произвольного типа. Создать его копию с новым именем.
Дан файл произвольного типа. Создать его копию с новым именем.Пожалуйста, напишите в Borland C++...

Подготовить bat-файл, при выполнении которого в текущем каталоге создается его копия под новым именем
Подготовить bat-файл, при выполнении которого в текущем каталоге создается его копия под новым...

Копирование Таблицы в БД с новым именем
Доброго времени суток как программно скопировать одну таблицу в acses и дать ей новое имя?

Копия файла с новым именем
procedure TForm1.BitBtn1Click(Sender: TObject); begin if CopyFile('C:\test\test.xls',...


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

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