Проверка файла zip-архива

Используя ZipArchive, как я могу проверить, является ли файл является действительным zip-архивом?

В настоящее время я ловлю InvalidDataException при попытке перечислить записи zip, но я не считаю, что это лучший способ сделать это:

public static bool IsCompressed(this HttpPostedFile postedFile)
{
    try
    {
        var entries = new ZipArchive(postedFile.InputStream).Entries;
        return true;
    }
    catch (InvalidDataException)
    {
        return false;
    }
}

person Dave New    schedule 16.05.2013    source источник
comment
Что с этим не так? Разве это не делает то, что вы хотите? Если да, то зачем менять?   -  person Oskar Kjellin    schedule 16.05.2013
comment
Потому что исключения не должны использоваться для изменения потока программы как части обычного выполнения. Исключения следует использовать только для сообщения и обработки исключительных ошибок приложения. Если я должен использовать его, то я буду. Мне просто интересно, есть ли другой/лучший способ проверки.   -  person Dave New    schedule 16.05.2013
comment
Я знаю, что не должен. Но если это делает ваш код чистым, читабельным и функциональным, то почему бы и нет? Не должен - это имхо не аргумент. Потратьте свое время на написание нового кода или исправление неработающего кода. Не чини то, что не сломано   -  person Oskar Kjellin    schedule 16.05.2013
comment
@davenewza Наличие искаженного zip-файла должно быть исключительным случаем. Если вы просто получаете какой-то случайный файл и хотите знать, является ли он zip-архивом, я бы рекомендовал проверить заголовок файла перед созданием экземпляра объекта ZipArchive. en.wikipedia.org/wiki/Magic_number_(programming)#Examples   -  person Kevin Gosse    schedule 16.05.2013