2017-09-12 3 views
0

Si j'ai un chemin de fichier ou un flux, existe-t-il une méthode statique que je peux utiliser pour déterminer si le fichier/flux est un paquet, en essayant d'utiliser Package.Open sur le fichier/flux et attraper le System.IO.FileFormatException?Existe-t-il un moyen de déterminer si un fichier peut être ouvert en tant que System.IO.Packaging.Package?

+1

Pas que je puisse voir; et en passant par la source de référence à environ 10 niveaux, suggère qu'il n'y aurait aucun travail enregistré en écrivant un. Je ne pouvais même pas trouver le lancement de ** FileFormatException ** dans environ 20 minutes de recherche. –

Répondre

3

Vous pouvez tenter d'ouvrir le fichier en tant que fichier .zip, puis rechercher des métadonnées (implémentant ainsi une partie de la spécification de package dans laquelle vous vérifiez le format du package) ou utiliser Open() et détecter toute exception potentielle. (Les formats .docx/.xlsx/etc ne sont que des fichiers ZIP qui suivent une certaine structure.)

Vous pouvez essayer de lire l'en-tête ZIP, mais cela ne fera que vérifier que le fichier est un fichier ZIP - Je ne suis pas bien sûr que cela vous achète beaucoup (si quelque chose). J'imagine qu'essayer d'ouvrir le fichier et d'attraper l'exception est la voie la plus facile à suivre - si la spécification change, votre code continuera à fonctionner. Si vous produisez votre propre code pour vérifier le format du fichier, vous devrez le conserver.