Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/67: Рейтинг темы: голосов - 67, средняя оценка - 4.66
 Аватар для alexbog80
0 / 0 / 1
Регистрация: 18.03.2009
Сообщений: 32

C# и работа с архивами

20.03.2009, 13:58. Показов 12947. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток госпада!
Речь вот о чем, как можно взять архивный файл а именно RAR, распаковать, поработать с файлами и обратно заархивировать в RAR?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2009, 13:58
Ответы с готовыми решениями:

работа с zip архивами
Здравствуйте! У меня такая проблема. Есть zip архив, в котором куча всяких файлов. Мне необходимо программно (на C#) вывести на форму...

Выбор библиотеки для работы с архивами
Доброго времени суток! Подскажите пожалуйста библиотеку для работы с архивами, которая соответствует следующим требованиям: 1. Умеет...

Как работать с ZIP архивами из ASP?
Подскажите плз как работать с ZIP архивами из ASP (зажирание ресурсов сервера не имеет значение) меня в основном интересует добавление...

13
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
20.03.2009, 14:07
Разархивировать можно с помощью UnRAR.dll, а как заархивировать я не знаю.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
21.03.2009, 06:36
Можно использовать консольные версии от WinRar: rar.exe и unrar.exe с параметрами.
0
 Аватар для alexbog80
0 / 0 / 1
Регистрация: 18.03.2009
Сообщений: 32
21.03.2009, 12:03  [ТС]
Цитата Сообщение от Green Посмотреть сообщение
Можно использовать консольные версии от WinRar: rar.exe и unrar.exe с параметрами.
то есть формировать строку типа: lccmd='rar.exe x -r -y '+m.lcnamefil+' *.dbf '
и обратно аналогично: lccmd='rar.exe a '+m.lcnamefil+' *.dbf ', а как запустить на выполнение?
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
23.03.2009, 08:15
Process.Start()
0
1 / 1 / 0
Регистрация: 17.10.2009
Сообщений: 12
17.02.2010, 15:41
народ, помогите... что за фигня... запускаю wrar.exe в ручную и передаю командную строку:
wrar.exe x rlaw905\*.EXE d:\temp\111 и wrar все распаковывает, а если запускаю wrar.exe программно, то ничего не распаковывается, но в тоже время и не выдает никаких ошибок.
Вот кусок кода:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public int StartCMDProcessRAR(string cmd)
        {
            int NumOfError = 0;
            // инициализация команды
            Process CMDProcess = new Process();
            // что запускать
            CMDProcess.StartInfo.FileName = "wrar.exe";
            CMDProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
            // параметры
            CMDProcess.StartInfo.Arguments = cmd;
            // запуск
            CMDProcess.Start();
            // ждем завершения
            CMDProcess.WaitForExit();
            //NumOfError = CMDProcess.ExitCode;
            return NumOfError;
и далее...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public void UnPack(string TSystem)
        {
 
            int Result;
            Result = StartCMDProcessRAR("wrar.exe x RLAW905-12.02.2010-09.36.EXE");
            switch (Result)
            {
                case 0:
                    LogEdit.AppendText("Распаковка файлов прошла успешно. \n");
                    break;
                case 2:
                    LogEdit.Text = "Архиватор wrar.exe не найден";
                    ErrorMessage = true;
                    break;
                default:
                    LogEdit.Text = "Распаковка файлов закончилать ошибкой. Код ошибки:" + Convert.ToString(Result) + "\n";
                    ErrorMessage = true;
                    break;
            }
 
        }
1
124 / 106 / 7
Регистрация: 14.02.2010
Сообщений: 263
17.02.2010, 15:43
Тоже задавался таким вопросом. Есть специальный компонент на .NET для работы с RAR. Только сейчас уже не помню где он
0
1 / 1 / 0
Регистрация: 17.10.2009
Сообщений: 12
17.02.2010, 16:31
Цитата Сообщение от serg42 Посмотреть сообщение
Тоже задавался таким вопросом. Есть специальный компонент на .NET для работы с RAR. Только сейчас уже не помню где он
Причем, таким же способом файлы тестируются, нов вот почему не какчаются...

Случайно, этот компонент не UnRARNET.dll?
0
124 / 106 / 7
Регистрация: 14.02.2010
Сообщений: 263
17.02.2010, 16:54
Нашёл - http://www.chilkatsoft.com/rar-dotnet.asp Тока сам так и не юзал, ничего про неё не могу сказать.
1
1 / 1 / 0
Регистрация: 09.09.2009
Сообщений: 13
09.03.2010, 22:16
arturline
1. В первую очередь, спасибо за пример кода. Как раз возникла точно такая же необходимость.
2. А почему оно, собственно, должно работать? Я впервые вижу (да и вообще с C# общаюсь пару недель), класс Process, однако заметил странность в твоем коде:
//что запускать
CMDProcess.StartInfo.FileName = "wrar.exe";
CMDProcess.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
// параметры
CMDProcess.StartInfo.Arguments = cmd;
Все прекрасно, но в качестве аргументов ты передаешь строку:
"wrar.exe x RLAW905-12.02.2010-09.36.EXE"
Итого, в командой строке это выглядело бы так:
wrar.exe wrar.exe x RLAW905-12.02.2010-09.36.EXE
Естественно, после этого он ничего не распаковывает. Попробуй убрать wrar.exe из передаваемой строки и напиши - что получится. (Или я все же ошибаюсь, и это не ошибка, а верная запись?).
0
 Аватар для Senator
14 / 14 / 2
Регистрация: 30.03.2009
Сообщений: 23
11.03.2010, 23:07
alexbog80 реализовывал для себя подобный алгоритм, с некоторыми апгрейдами: выполнение в отдельном потоке(backGroundWorker), отображение прогресса операции.

Работал с arj архивами и консольным архиватором 7z. Код выложу завтра к вечеру.

Для начала несколько замечаний-идей:

1.
C#
1
2
3
CMDProcess.WaitForExit
//NumOfError = CMDProcess.ExitCode;
return NumOfError;
не даст результата кроме 0 - ошибок нет.(кстати проверьте exit code для архиватора 0-ошибок нет, а дальше все зависит от архиватора вплоть до сообщения не поддерживаемый тип архива(в arj.exe это 9))

2. Если Process передать bat-файл(со строкой команды) то можно скрыть консольное окно архиватора.

3. Советую использовать 7z лицензия GNU LGPL ещё никому не помешала. При инсталяции 7z в директорию установки попадает не только консольный архиватор(7z.exe), но и chm-файл со справкой по параметрам этого архиватора.

4. Присмотритесь к командам архиватора, возможно то что вы хотите сделать в 2 действия (распаковка-запаковка) можно провернуть в одно например удаление/обновление файлов.
0
 Аватар для mitsky
31 / 31 / 6
Регистрация: 31.12.2009
Сообщений: 82
12.03.2010, 10:03
а почему бы вам не попробовать использовать C# Zip Lib? небольшой пример можно посмотреть тут.
0
 Аватар для Senator
14 / 14 / 2
Регистрация: 30.03.2009
Сообщений: 23
13.03.2010, 00:39
Листинг функции читающей список файлов в архиве.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    
string ErrorSignal = "";
FileInfo tempDump = new FileInfo("~tempListing.bat");
FileStream Connect7z = tempDump.Open(FileMode.Create, FileAccess.ReadWrite);
StreamWriter sw = new StreamWriter(Connect7z);
sw.WriteLine("7z l " + pathARJ + " > Doc.txt");
sw.Close();
Connect7z.Close();
 
Process myProcess1 = new Process();
myProcess1.StartInfo.FileName = "~tempListing.bat";
myProcess1.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
myProcess1.Start();
myProcess1.WaitForExit();
 
if (myProcess1.ExitCode != 0)
{
    ErrorSignal = "Error listing;";
}
tempDump.Delete();
1
1 / 1 / 0
Регистрация: 17.10.2009
Сообщений: 12
08.04.2010, 16:23
Цитата Сообщение от EqKeeper Посмотреть сообщение
arturline
1. В первую очередь, спасибо за пример кода. Как раз возникла точно такая же необходимость.
2. А почему оно, собственно, должно работать? Я впервые вижу (да и вообще с C# общаюсь пару недель), класс Process, однако заметил странность в твоем коде:

Все прекрасно, но в качестве аргументов ты передаешь строку:

Итого, в командой строке это выглядело бы так:

Естественно, после этого он ничего не распаковывает. Попробуй убрать wrar.exe из передаваемой строки и напиши - что получится. (Или я все же ошибаюсь, и это не ошибка, а верная запись?).

это не ошибка...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.04.2010, 16:23
Помогаю со студенческими работами здесь

Есть ли компоненты для работы с ZIP архивами на сервере?
Собственно subj. Просто надо удаленно обновлять содержимое web-сайта - решил просто грузить через форму ZIP-архив, а на сервере его...

Работа с архивами!
У меня скачивается архив с интернета! Как его разархировать??? Ну или как сделать так, чтобы при распаковки самораспаковывающегося...

Работа с архивами, распаковка
Здравствуйте!! Необходимо через программу загрузить архивный файл и распаковать его. Не могу добиться, чтобы программа все начала...

Работа с архивами
У меня есть программа - сервер которая принимает данніе от клиента. Данные сохраняются в текстовом файле. Нужно организовать что бы...

Работа с архивами
всем привет. у меня следующая проблема. не знаю как сделать так, чтобы, при загрузке фотографий или файлов, они загружались автоматически...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru