как оценить размер архива до(без) его архивирования с помощью Vclzip
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
архивирую файлы при помощи компоненты Vclzip
как узнать размер будующего архива?
как узнать размер будующего архива?
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
Никак. Можно заархивировать, посмотреть размер, удалить, а потом снова архивировать с красивым прогресс-баром.namomelkor писал(а):архивирую файлы при помощи компоненты Vclzip
как узнать размер будующего архива?
2B OR NOT(2B) = FF
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
а зачем?? прогрессор можно отрисовать по исходному объёму 


-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
прогрес бар не нужен. Нужно узнать хватит ли места на диске для архива. А вариант с подсчетом размера исходных файлов не подходит.Игорь Акопян писал(а):а зачем?? прогрессор можно отрисовать по исходному объёму![]()
-
- Сообщения: 1228
- Зарегистрирован: 26 фев 2004, 13:24
- Откуда: Pietari, Venäjä
- Контактная информация:
На каком диске? Если беспокоит вопрос с архивированием на съемный диск, то можно архивировать во временный файл ( GetTempFileName(...) ), а потом копировать его на съемный диск, предварительно проверив свободное место. Беспокоиться отновительно места на HDD не стоит - если оно закончится, то система вообще работать не обязана.namomelkor писал(а):прогрес бар не нужен. Нужно узнать хватит ли места на диске для архива. А вариант с подсчетом размера исходных файлов не подходит.
2B OR NOT(2B) = FF
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
1. Нужна проверка свободного места на ftp (на ftp отсылаются архивы)
2. проверка свободного места на указаном пользователем диске.
также предархивирование занимает много времени а в моей системе это совсем не желательно.
Допусим человек хочет отослать на ftp 2-3 гига информации которая в архивированом виде займет 300 метров. А на ftp свободно 250. Ему сначала нужно проверить хватит ли места. Если не хватает то он удаляет часть отсылаемых файлов и опять проверяет свободное место. И какдый раз мне придется архивиновать эти 2-3гига пользователь так состарится ))))
2. проверка свободного места на указаном пользователем диске.
также предархивирование занимает много времени а в моей системе это совсем не желательно.
Допусим человек хочет отослать на ftp 2-3 гига информации которая в архивированом виде займет 300 метров. А на ftp свободно 250. Ему сначала нужно проверить хватит ли места. Если не хватает то он удаляет часть отсылаемых файлов и опять проверяет свободное место. И какдый раз мне придется архивиновать эти 2-3гига пользователь так состарится ))))
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
Статистика рулит! Прикинь тип данных отправляемых на сервер, пожми данные, посмотри на ско-ко изменился размер, повтори так несколько раз с разными типами файлов (из списка тех, что будут отсылаться), выведит коэфициент с запасом и прогнозируйархивирую файлы при помощи компоненты Vclzip. как узнать размер будующего архива?

-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
Статистика совсем не рулит ))) Мне всегда про статистику вспоминается одна история:
Например по статистике одного человека можно накормить половиной курицы тогда если есть 1млн человек и пол млн куриц можно говорит что все сыты(вот так и у нас в стране происходит ))) ).
Я выделяю для пользователя на фтп место только логически т.е в какойто переменной содержится доступное для него место(друго возможнисти нет и скорее всего не будет). И если отправлятть файлы по статистике то либо человек сможет залить файлов больше чем его доступное место либо гораздо меньше такой вариант совсем не подходит. (на сервер могут отправлятся совершенно любые данные и даже если сделать коэффициенты для всех типов файлов которые мне известны то это не решит проблему т.к расширение файла можно поменять на людое дгугое а коэф сжатия от этого не изменится. А писать проверку типа файла по его содержанию довольно сложно и того не стоит)
Например по статистике одного человека можно накормить половиной курицы тогда если есть 1млн человек и пол млн куриц можно говорит что все сыты(вот так и у нас в стране происходит ))) ).
Я выделяю для пользователя на фтп место только логически т.е в какойто переменной содержится доступное для него место(друго возможнисти нет и скорее всего не будет). И если отправлятть файлы по статистике то либо человек сможет залить файлов больше чем его доступное место либо гораздо меньше такой вариант совсем не подходит. (на сервер могут отправлятся совершенно любые данные и даже если сделать коэффициенты для всех типов файлов которые мне известны то это не решит проблему т.к расширение файла можно поменять на людое дгугое а коэф сжатия от этого не изменится. А писать проверку типа файла по его содержанию довольно сложно и того не стоит)
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
Насколько я тебя понял, то загрузка файлов на сервер осуществляется через твою программу, которая помимо всего прочего архивирует файлы в один большой архив и размещает его на сервере? А если тебе создавать не один большой архив, а много маленьких (один архив для одного файла), и размещать уже эти маленькие архивы. Данные тогда будут архивироваться один раз, ты расчитываешь свободное место и помещаешь туда только те файлы которые влазят. Если смущают мелкие файлы, так их потом можно в режиме store оформить в одни большой файл, но это уже думаю лишнее.
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
У меня и так каждый файл архивируется в отдельный архив а архивы больше 5-ти Мб бьются по частям. Но всеравно нужно отправлять все файлы сразу. Точнее если файлы не влазят то отбрасывать лишние должет пользователь а не софт.