Comment faire pour déterminer le type de fichier?
J'ai besoin de savoir si mon fichier est fichier audio: mp3, wav, etc...
Comment faire?
Ce qui détermine un type de fichier pour vous, en dehors de l'extension? Pas tous les fichier de métadonnées qui indique son type.
un fichier d'en-tête, qui détermine un type de fichier. De fichiers Audio, de fichiers vidéo, de fichiers djvu, etc...
La réponse la plus simple est juste pour ouvrir le fichier comme un flux d'octets et de lire dans les 20 premières octets, alors. Mais vous devez être prudent, car il n'existe pas de norme pour la façon dont la signature octets sont stockés dans un fichier d'en-tête. Vous allez devoir tester tous les cas ou certains stellaire de la documentation disponible.
un fichier d'en-tête, qui détermine un type de fichier. De fichiers Audio, de fichiers vidéo, de fichiers djvu, etc...
La réponse la plus simple est juste pour ouvrir le fichier comme un flux d'octets et de lire dans les 20 premières octets, alors. Mais vous devez être prudent, car il n'existe pas de norme pour la façon dont la signature octets sont stockés dans un fichier d'en-tête. Vous allez devoir tester tous les cas ou certains stellaire de la documentation disponible.
OriginalL'auteur Sergey | 2010-11-14
Vous devez vous connecter pour publier un commentaire.
Eh bien, le plus robuste serait d'écrire un analyseur syntaxique pour les types de fichiers que vous voulez détecter et puis juste essayer – si il n'y a pas d'erreurs, c'est évidemment du type que vous avez essayé. Cette méthode coûte cher, cependant, mais il ferait en sorte que vous pouvez réussir à charger le fichier, car il permettra également de vérifier le reste du fichier sémantique pour la solidité.
Beaucoup moins cher variante serait de rechercher pour “magic” octets – signatures au début ou connue de décalage du fichier. Par exemple, si un fichier commence par une balise ID3, vous pouvez être raisonnablement sûr que c'est un fichier MP3. Si un fichier commence par
RIFF¼↕☻ WAVEfmt
, alors c'est un fichier WAV. Cependant, une telle détection ne peut pas vous garantir que le fichier est vraiment de ce type – il pourrait être simplement la signature et à la suite de ce que les ordures.OriginalL'auteur Joey
Bien que vous puissiez utiliser l'extension de deviner ce que le fichier n'est pas garanti à 100% du temps. Si vous utilisez Windows, puis il sera travail 99,9% du temps que c'est comme Windows conserve une trace de ce fichier est de ce type.
Si vous obtenez vos fichiers à partir de non-Windows sources, le moyen le plus sûr est d'ouvrir le fichier et de rechercher une chaîne de caractères spécifique ou un ensemble d'octets qui permettra d'identifier sans ambiguïté. Par exemple, vous pouvez regarder pour le Les tags ID3 dans un fichier mp3:
ou
Dans quelle mesure vous allez dépend de la façon robuste vous voulez que votre solution, et ne s'appuient sur l'existence d'un en-tête ou un motif qui est toujours présente.
Cette façon de faire peut aider à protéger contre les contenus malveillants lorsque quelqu'un poste un morceau de malware comme un fichier mp3 (par exemple) et espère qu'il va juste être exécuté par un programme sujette à certains exploiter (un dépassement de la mémoire tampon, peut-être).
point intéressant à propos des Mac, je pense qu'ils ont utilisé le "unix" la méthode.
C'est en fait assez un peu plus compliqué pour préserver la compatibilité avec la double méthode utilisée en pré-OS X de l'intégrer à la fois un type de code et un code de créateur dans la fourchette de ressource. En 10.4, Apple a commencé à utiliser un Type Uniforme d'identification, ce qui est quelque chose que nous dans le monde de Windows ne peuvent que rêver. Jusqu'à 10.6, cependant, un dossier est encore ouvert sur son créateur code si elle était présente, mais ce problème a depuis été supprimé, ainsi que tous les documents (même aux anciens codes de créateur) utiliser l'extension de fichier exclusivement.
OriginalL'auteur ChrisF
Voir cette post. Vous vous retrouvez à passer la première (jusqu'à) 256 octets de données à partir du fichier de FindMimeFromData (une partie de la Urlmon.dll).
OriginalL'auteur pinkfloydx33
Vous pouvez utiliser l'extension de fichier pour le comprendre:
L'extension de fichier est le premier point d'appel pour l'OS de comprendre à quel type de fichier il s'agit, si vous voulez vraiment connaître le type de fichier de 100% la seule façon de le faire est de lire dans le fichier. Mais cela vient avec un catch, les fichiers images sont simples, ils incluent des en-têtes dans un joli format facile à lire, mais il peut être un peu plus complexe avec une variable de type de fichier.
Vous pouvez vérifier cette post sur un vieux post pour un peu d'aide. Ici est un post à ce sujet pour trouver les types de fichiers multimédia.
En fin de compte, il dépend de pourquoi vous essayez de le faire.
OriginalL'auteur JonVD
OriginalL'auteur Mr. Smith