J'ai quelques types de fichiers texte avec des données telles que des informations sur les produits, des actions, des informations sur les fournisseurs, etc. et ils sont tous structurés différemment. Il n'y a pas d'autre identificateur du type, sauf la structure elle-même (il n'y a pas en-têtes, pas de convention de nom de fichier, etc.)Comment identifier le format de fichier texte par sa structure?
Quelques exemples de ces fichiers:
(produits et stocks)
2326 | 542212 | Bananas | 00023 | 1 | pack
2326 | 297875 | Apples | 00085 | 1 | bag
2326 | 028371 | Pineapple | 00007 | 1 | can
...
(produits et prix)
12556 Meat, pork 0098.57
58521 Potatoes, mashed 0005.20
43663 Chicken wings 0009.99
...
(produits et fournisseurs - ici N est le séparateur)
03038N92388N9883929
28338N82367N2837912
23002N23829N9339211
...
(information produit - plusieurs types de lignes)
VIN|Mom & Pops|78 Haley str.
PIN|BLT Bagel|5.79|FRESH
LID|0239382|283746
... (repeats this type of info for different products)
Et plusieurs autres. Je veux créer une fonction qui identifie lequel de ces types est un fichier donné, en utilisant uniquement le contenu. Google n'a été d'aucune aide, en partie parce que je ne sais pas quel terme de recherche utiliser. Inutile de dire que «identifier le type de fichier par contenu/structure» n'est d'aucune aide, il me donne juste des résultats sur la façon de trouver jpgs, pdfs, etc .. Il serait utile de voir un code que d'autres ont écrit . Ce que j'ai pensé jusqu'ici est de faire une classe FileIdentifier pour chaque type, puis quand un fichier est donné, essayez de l'analyser et s'il ne fonctionne pas, passez au type suivant. Mais cela semble être une erreur et je devrais coder beaucoup d'informations. En outre, que se passe-t-il si un autre format vient et est très similaire à l'un des existants, mais a des informations différentes dans les colonnes?