Есть ли способ определить, можно ли открыть файл как System.IO.Packaging.Package?
Если у меня есть путь к файлу или поток, есть ли статический метод, который я могу использовать, чтобы определить, является ли файл / поток пакетом, кроме как попыткой использовать Package.Open
на файл / поток и ловить System.IO.FileFormatException
?
1 ответ
Вы можете либо попытаться открыть файл как файл.zip, а затем искать метаданные (таким образом реализуя часть спецификации пакета, где вы проверяете формат пакета), либо вы можете просто использовать Open()
и поймать любое потенциальное исключение. (Форматы.docx / .xlsx / etc - это просто ZIP-файлы, которые следуют определенной структуре.)
Вы можете попробовать прочитать ZIP-заголовок, но это будет только для проверки того, что файл является ZIP-файлом - я не уверен, что это вам дорого (если что-нибудь).
Я предполагаю, что попытка открыть файл и поймать исключение - самый простой путь - если спецификация изменится, ваш код продолжит работать. Если вы свернули свой собственный код для проверки формата файла, вам придется продолжать поддерживать его.