2009-03-31 3 views
2

Je travaille sur un service Web .NET qui traitera un fichier texte avec un format d'enregistrement à plusieurs niveaux relativement long. Chaque enregistrement dans le fichier représente une entité différente; l'enregistrement contient plusieurs sous-types. (Le même format d'enregistrement est actuellement traité par un travail COBOL, si cela vous donne une meilleure image de ce que nous regardons). J'ai créé une structure de classe (une DIVISION DE DONNÉES si vous voulez) pour contenir les données d'entrée.Meilleures pratiques pour le traitement à largeur fixe dans .NET

Ma question est, quelles sont les meilleures pratiques que vous avez trouvées pour le traitement de gros fichiers complexes de largeur fixe dans .NET? Mon approche générale sera de lire la ligne entière dans une chaîne, puis d'analyser les données de la chaîne dans les classes que j'ai créées. Mais je ne suis pas sûr si j'obtiendrai de meilleurs résultats en travaillant avec les caractères de la chaîne en tant que tableau, ou avec la chaîne elle-même. Je suppose que c'est la question spécifique, chaîne vs. char [], mais j'apprécierais tout autre pointeur.

Merci.

Répondre

6

Je créer des classes qui correspondent aux données dans les lignes, en utilisant des attributs pour les types, la longueur, etc. Puis utiliser l'objet Microsoft.VisualBasic.FileIO.TextFieldParser pour lire le fichier, avec un code générique pour programmer l'analyseur en fonction de la classe données et créer une instance de la classe (tout en utilisant la réflexion). Je l'utilise pour lire des fichiers CSV et c'est rapide, flexible, extensible, générique et facile à maintenir. J'ai aussi des attributs qui me permettent d'ajouter une validation générique à chaque champ en cours de lecture. Je partagerais mon code, mais c'est l'adresse IP de l'entreprise pour laquelle je travaille.

+0

+1 pour être conscient de TextFileParser. Personne ne semble le savoir ici. A moins qu'il y ait un problème secret, si bien que personne n'aime le mentionner? – MarkJ

+0

D'accord. Je ne m'en suis jamais occupé avant non plus. Merci beaucoup ck. –

+0

En fait, il s'appelle 'TextFieldParser'. Je suis d'accord que c'est un cours assez utile. – Gart

Questions connexes