Нет и если бы Вы думаете об этом, это не было бы очень полезно. В Вашем случае Вы не могли быть уверены, что Ваш тестовый прогон будет когда-либо останавливаться, потому что, если всегда будут 'ложные отрицательные стороны то ' всегда будут тесты, которые должны быть запущены...
я сказал бы, что просто необходимо использовать хеш.
Попробуйте это на Python:
import zipfile
z = zipfile.ZipFile('c:/a_zip_file')
print 'total files size=', sum(e.file_size for e in z.infolist())
z.close()
Zip - это, хм, «интересный» формат. Надежным решением является потоковая передача данных и остановка, когда у вас будет достаточно. В Java используйте ZipInputStream
вместо ZipFile
. Последнее также требует, чтобы вы сохраняли данные во временном файле, что тоже не самая лучшая идея.
Прочтите описание в Википедии -
Запретите любые сжатые файлы, содержащие сжатые файлы.
Используйте ZipFile.entries () , чтобы получить список файлов, затем ZipEntry.getName () , чтобы найти расширение файла.
Запретите любые сжатые файлы, которые содержат файлы, размер которых превышает установленный, иначе размер не может быть определен при запуске.
Во время перебора файлов используйте ZipEntry.getSize () для получения размера файла.
Не позволяйте процессу загрузки записывать достаточно данных для заполнения диска, т. Е. Решать проблему, а не только одну из возможных причин проблемы.
Если распаковщик ZIP, который вы используете, может предоставить данные об исходном и сжатом размере, вы можете использовать эти данные. В противном случае начните разархивировать и следите за размером вывода - если он слишком сильно вырастет, отрежьте его.
Убедитесь, что вы не используете системный диск для временного хранения. Я не уверен, проверит ли его сканер вирусов, если он его обнаружит.
Также вы можете просмотреть информацию внутри zip-файла и получить список содержимого. Как это сделать, зависит от утилиты, используемой для извлечения файла, поэтому вам необходимо предоставить дополнительную информацию здесь