2011-02-12 5 views
1

J'ai un fichier texte qui a le format suivant:Comment lire un fichier texte dans une liste en C#

ABC123 1000 2000

La première valeur entière est un poids et la la ligne suivante a trois valeurs, un code de produit, le poids et le coût, et cette ligne peut être répétée un certain nombre de fois. Il y a un espace entre chaque valeur.

J'ai été capable de lire dans le fichier texte, stocker la première valeur sur la première ligne dans une variable, puis les lignes suivantes dans un tableau, puis dans une liste, en utilisant first readline.split ('') . Pour moi, cela semble une manière inefficace de le faire, et j'ai essayé de trouver un moyen de lire à partir de la deuxième ligne où les codes de produits, les poids et les coûts sont répertoriés dans une liste sans avoir besoin de en utilisant un tableau. Mon contrôle de liste contient un objet où je ne stocke que le poids et le coût, pas le code du produit.

Est-ce que quelqu'un sait comment lire dans un fichier texte, prendre certaines valeurs du fichier directement dans un contrôle de liste?

Merci

+0

Si les segments de la deuxième ligne ont une longueur constante, utilisez des index au lieu de la commande fractionnée – Luis

+0

Vous devriez vraiment accepter certaines réponses. Vous avez posé 17 questions qui ont reçu des réponses, mais vous n'avez pas accepté ... –

Répondre

1

Ce que vous faites est correct. Il n'y a pas de façon généralisée de le faire, puisque ce que vous avez fait, c'est que vous en avez descendu l'algorithme, qui doit être codé ou paramétré d'une manière ou d'une autre.

0

Depuis votre fichier texte n'est pas aussi structuré comme un fichier CSV, ce type d'analyse manuelle est probablement votre meilleur pari.

C# n'a pas de classe Scanner comme Java, donc ce que vous ne voulez pas n'existe pas dans la BCL, bien que vous puissiez write your own.

0

Les autres réponses sont correctes - il n'y a pas de solution généralisée pour cela. Si vous avez un fichier relativement petit, vous pouvez utiliser File.ReadAllLines(), qui va au moins se débarrasser d'un code beaucoup de cruft, car il va immédiatement le convertir en un tableau de chaînes pour vous.

0

Si vous ne souhaitez pas analyser les chaînes à partir du fichier et réserver une mémoire supplémentaire pour conserver les chaînes fractionnées, vous pouvez utiliser un format binaire pour stocker vos informations dans le fichier. Ensuite, vous pouvez utiliser la classe BinaryReader avec des méthodes comme ReadInt32(), ReadDouble() et autres. C'est plus efficace que lire par des caractères.

Mais une chose: le format binaire est mal lisible par les humains. Il sera difficile d'éditer le fichier dans l'éditeur. Mais par programme - sans aucun problème.

Questions connexes