Quel est le meilleur moyen de l'analyse d'une largeur fixe de fichier formaté en Java?
J'ai un fichier à partir d'un fournisseur qui dispose de 115 largeur fixe champs par ligne. Quel est le meilleur moyen de l'analyse de ce fichier dans les 115 les champs afin que je puisse les utiliser dans mon code?
Ma première pensée est juste pour faire des constantes pour chaque champ comme NAME_START_POSITION
et NAME_LENGTH
et à l'aide de substring
. Semble tout simplement laid, donc je suis curieux de savoir si il y a d'autres façons de le faire. Aucun des deux bibliothèques d'une recherche sur Google tourné semblait mieux. Grâce
Vous voudrez peut-être consulter la question connexe stackoverflow.com/questions/5885063/...
OriginalL'auteur MattGrommes | 2009-10-22
Vous devez vous connecter pour publier un commentaire.
Je voudrais utiliser un analyseur de fichiers à plat comme le ver plat plutôt que de réinventer la roue: il a un nettoyage de l'API, est simple à utiliser, a décent erreur de manipulation et un simple format de fichier descripteur. Une autre option est jFFP mais je préfère la première.
Je suis heureux de savoir que vous avez aimé. Et merci beaucoup pour le suivi, c'est très apprécié!
J'ai essayé la bibliothèque il y a quelques jours et il a été battu au-delà de la réparation. Je voudrais essayer la version précédente, mais je ne vois pas de docs pour elle
C'est un outil formidable! Est-il un moyen de l'intégrer dans une sorte de rédacteur de l'éclipse?
Êtes-vous les gars encore à l'aide de ce ver plat de l'outil? la DTD de référence est cassée dans le format de fichier de définition XML. Comment puis-je résoudre ce problème?
OriginalL'auteur Pascal Thivent
J'ai joué autour avec fixedformat4j et c'est très agréable. Facile à configurer les convertisseurs et la comme.
projet déménagé à github.com/jeyben/fixedformat4j
OriginalL'auteur p3t0r
univocité-analyseurs est livré avec un
FixedWidthParser
etFixedWidthWriter
le pouvez appuyer difficile à largeur fixe formats, y compris les lignes avec différents domaines, les rembourrages, etc.Voici quelques exemples pour l'analyse toutes sortes de largeur fixe entrées.
Et voici quelques autres exemples pour l'écriture en général et d'autres fixe la largeur des exemples spécifiques à la largeur fixe de format.
Divulgation: je suis l'auteur de cette bibliothèque, il est open-source et libre (Licence Apache 2.0)
OriginalL'auteur Jeronimo Backes
Ici est une implémentation de base que j'utilise:
Vous avez raison ... Cette application est utilisée pour une largeur fixe des enregistrements qui se terminent dans le saut de ligne.
OriginalL'auteur Constantin
Le plus approprié pour la Scala, mais probablement vous permettre de l'utiliser en Java
J'en avait tellement marre avec le fait qu'il n'existe pas de bibliothèque digne de ce nom pour le format de longueur fixe que j'ai créé mon propre. Vous pouvez le vérifier ici: https://github.com/atais/Fixed-Length
Un usage de base est que vous créez une classe de cas et il est décrit comme un
HList
(Informe):Et vous pouvez facilement décoder vos lignes ou encoder vos objet:
OriginalL'auteur Atais
Le Apache Commons CSV projet peut gérer fixe avec des fichiers.Ressemble à la largeur fixe de la fonctionnalité n'a pas survécu à la promotion de la sandbox.
Il n'y a pas de sortie officielle. C'est sensiblement différent de "ne fonctionne pas". Basé sur la quantité de temps il a été dans le bac à sable, personne ne semble être en le poussant vers la sortie, mais il finit toujours par arriver largement utilisé.
Pouvez-vous développer? J'ai juste eu un coup d'oeil à l'API et ne pouvait pas trouver tout soupçon ou la preuve qu'il supporte fixe la largeur des colonnes au lieu de délimiteurs. BTW, l'URL est commons.apache.org/proper/commons-csv
OriginalL'auteur Jherico
Ici est la plaine de code java pour lire fixedwidth fichier:
OriginalL'auteur Sriramkishore Naraharisetti
OriginalL'auteur Amit Prasad
Vous pouvez utiliser
\t+
que votre délimiteur.Essayer quelque Chose comme
OriginalL'auteur UgoMano
Si votre chaîne est appelé
inStr
, convertir un char tableau et utiliser l'String(char[], start, length)
constructeurOriginalL'auteur user300778