|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Ребятки, может кто подскажет где копать? Теоретически всё работает, WinRAR показывает имена файлов, размер и сжатый размер. Но не распаковывает - говорит кривой архив. :( Visual Studio 2013. Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 00:38 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerVal, Файлик то приложите. Телепатов тут нет. Ну и есть еще класс ZipFile ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 00:51 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Arm79SerVal, Файлик то приложите. Телепатов тут нет. Ну и есть еще класс ZipFile + у вас может быть GZip - это GZipStream/ Ну и на всякий случай этот код рабочий именно для Zip: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 00:56 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Arm79Файлик то приложите. Телепатов тут нет. Ну и есть еще класс ZipFile Приложил. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 01:14 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Arm79Ну и на всякий случай этот код рабочий именно для Zip... Этот код не создаёт архив, а читает. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 01:18 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
а, точно, не въехал сразу. Так вот: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
А ошибка у вас в том, что ZipArchive - это Disposable. И после "ZipArchiveEntry resultEntry = zipArchive.CreateEntry(result_name); " ссылок не встречается. Чистится память. Dispose ему делайте после окончания цикла While ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 01:31 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerVal, у меня данный код создает архив который WinRAR открывает без ошибок. Возможно ты делаешь что-то не так при записи в БД или чтении из нее. P.S. Функция AddResultToArchive использует ref параметров которые не нужны. Кроме этого для записи массива нет нужды создавать BinaryWriter т.к. resultEntry.Open() возвращает Stream умеющий это делать. Поэтому можно переписать так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 01:48 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Спасибо за отклик. *микрософтовские примеры я уже все перелопатил. Arm79А ошибка у вас в том, что ZipArchive - это Disposable. И после "ZipArchiveEntry resultEntry = zipArchive.CreateEntry(result_name); " ссылок не встречается. Чистится память. Dispose ему делайте после окончания цикла While Что-то не могу понять, что надо делать. :( Память вроде бы нигде не чистится. Я сам её удаляю: ms.Dispose(); Сейчас попробую Dispose для архива после окончания цикла While. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 01:52 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Arm79 , Ура!!! archive.Dispose() после while() - помогло. Больше ничего не менял. Вы умница. Огромное спасибо. У WinRar-а и контрольные суммы появились. :) Сейчас попробую закатать 100 тыс. в архив, но думаю, что всё будет ок. bazileФункция AddResultToArchive использует ref параметров которые не нужны. Кроме этого для записи массива нет нужды создавать BinaryWriter т.к. resultEntry.Open() возвращает Stream умеющий это делать. Поэтому можно переписать так: .. А что такое "var"? Нельзя ли вместо неё подставить конкретный тип? Я не использую переменные неопределённого типа. Сейчас это модно, но у меня только строгая типизация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 02:08 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
2 bazile : А почему не надо передавать массивы по ссылке? По значению я их никогда не передавал. StringBuilder тоже по ссылке везде передаю. И строки большого размера. *у меня много таких мест, вот и интересуюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 02:13 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerValarchive.Dispose() после while() - помогло. Больше ничего не менял. Вы умница. Огромное спасибо. Конечно я умница. Не за что. SerValА что такое "var"? Нельзя ли вместо неё подставить конкретный тип? var - это и есть конкретный тип. Это строгая типизация. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 02:14 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerVal2 bazile : А почему не надо передавать массивы по ссылке? По значению я их никогда не передавал. StringBuilder тоже по ссылке везде передаю. И строки большого размера. *у меня много таких мест, вот и интересуюсь. По ссылке передают обычно value-типы, например struct или long. Массив, строка, класс - это и есть ссылка. Дополнительно нет смысла, хотя можно ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 02:17 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Arm79var - это и есть конкретный тип. Это строгая типизация. Спасибо, наверное я отстал от жизни. Просто после того как увидел в C# нечто подобное: Код: c# 1. 2. 3.
Мне стало как-то не по себе. Какого типа "с" я понять не в состоянии. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 02:31 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerValArm79var - это и есть конкретный тип. Это строгая типизация. Спасибо, наверное я отстал от жизни. Просто после того как увидел в C# нечто подобное: Код: c# 1. 2. 3.
Мне стало как-то не по себе. Какого типа "с" я понять не в состоянии. :( в данном случае все три - это int :-) Вот если один из первых будет объявлен как double, то с - тоже double. Или так: var c = 1.00 * a/b (здесь тоже double ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 02:44 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerVal, Implicitly Typed Local Variables (C# Programming Guide) It is important to understand that the var keyword does not mean "variant" and does not indicate that the variable is loosely typed, or late-bound. It just means that the compiler determines and assigns the most appropriate type. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 07:30 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerValСпасибо, наверное я отстал от жизни На 7 лет. var появился в 3-м фреймворке. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 07:32 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
имхо, самое хорошее решение, это использование 7z.dll, максимальный уровень сжатия, отличная скорость, поддержка нескольких форматов, ну да сами знаете. Встроенный Zip в .NET убог, медлителен и вообще ужасен ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 12:45 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Roman Mejtes, Нет понятия - самое хорошее. Есть - наиболее подходящее для заданных условий. 7z - это неуправляемый код, не вижу смысла с ним разбираться, если учесть что это web. Нет ни требований по максимальному быстродействию, ни по поддержке разных форматов. В этом случае несколько строк кода и штатные возможности предпочтительнее ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 14:45 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Arm79, понятно, что выбор обусловлен множеством критериев. Я лишь привёл 1 из вариантов. К примеру в 1 из моих проектов объём сжимаемых данных может превышать 40 гб и сжать такой объём средствами .NET вообще невозможно. Я предложил, остальное дело за автором. Ему виднее, что для него важнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 14:55 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Arm797z - это неуправляемый код, не вижу смысла с ним разбираться, если учесть что это web. Нет ни требований по максимальному быстродействию, ни по поддержке разных форматов. В этом случае несколько строк кода и штатные возможности предпочтительнее +1 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 16:13 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
Roman Mejtesимхо, самое хорошее решение, это использование 7z.dll Использую 7z.dll для входящих архивов по 200-400 тыс. файлов. Народ недоволен тем, что не видит прогресс распаковки. Распаковка "замораживает" вэб страницу на 1-2 минуты. После чего пользователь видит прогресс добавления файлов в базу. А народ сразу хочет видеть, что "процесс пошёл". :) *но "жмёт" 7z лучше zip-а. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 19:13 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerVal, ну я не шарю в вебе, в толстом с прогрессом архивации у меня проблем не было ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 20:00 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
SerValRoman Mejtesимхо, самое хорошее решение, это использование 7z.dll Использую 7z.dll для входящих архивов по 200-400 тыс. файлов. Народ недоволен тем, что не видит прогресс распаковки. Распаковка "замораживает" вэб страницу на 1-2 минуты. После чего пользователь видит прогресс добавления файлов в базу. А народ сразу хочет видеть, что "процесс пошёл". :) *но "жмёт" 7z лучше zip-а. Никто не спорит, что 7z компактнее, чем zip. Зато zip - универсальнее :-) А кто вам мешает при чтении архива на 400 тысяч файлов делать progress на каждые, скажем, 10 000 файлов? SignalR в помощь... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2015, 20:43 |
|
C# помогите с созданием Zip архива
|
|||
---|---|---|---|
#18+
[quot Arm79] SerValпропущено... А кто вам мешает при чтении архива на 400 тысяч файлов делать progress на каждые, скажем, 10 000 файлов? SignalR в помощь... Так файлов-то нетути. Читается в память, в ней же и разархивируется. Всё равно же в базу добавлять. Зачем файлы? Их потом делетить надобно... ну их. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2015, 03:07 |
|
|
start [/forum/topic.php?fid=20&msg=38862530&tid=1401982]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 359ms |
total: | 609ms |
0 / 0 |