Comment spécifier-vous où commencer à lire dans un fichier lors de l'utilisation StreamReader?
-
09-09-2019 - |
Question
Comment spécifier-vous où commencer à lire dans un fichier lors de l'utilisation StreamReader?
J'ai créé un objet StreamReader, ainsi qu'un objet de flux de fichier. Après que les deux objets sont créés, comment pourrais-je aller sur le contrôle où je veux que le StreamReader pour commencer à lire à partir d'un fichier?
Disons que le contenu du fichier sont les suivants,
// song list.
// junk info.
1. Song Name
2. Song Name
3. Song Name
4. Song Name
5. Song Name
6. Song Name
Comment puis-je contrôler la StreamReader pour lire, disons # 2? En outre, comment pourrais-je contrôler aussi là pour le faire arrêter la lecture par un délimiteur similaire comme à # 5?
Edit: Par delimiter Je veux dire, un moyen de faire la lecture à partir StreamReader commencer ( '2'.)
La solution
Vous essayez de désérialiser un fichier dans un objet en mémoire? Si oui, vous pouvez analyser simplement le fichier entier en utilisant ReadLine
ou quelque chose de similaire, stocker chaque ligne, et y accéder via une structure de données comme un KeyValuePair<int, string>
.
Mise à jour: Ok ... Avec la nouvelle info, je pense que vous avez deux options. Si vous cherchez à la lecture jusqu'à ce que vous trouviez un match, vous pouvez Peek()
, vérifier si le personnage est celui que vous cherchez, puis Read()
. Sinon, si vous êtes à la recherche d'une position de jeu, vous pouvez simplement Read()
que beaucoup de personnages et de jeter la valeur de retour.
Si vous cherchez delimiter complexe, vous pouvez lire toute la ligne ou même le fichier en mémoire et utiliser expressions rationnelles .
Hope qui aide ...
Autres conseils
Si le fichier contient une nouvelle ligne que vous pouvez utiliser délimiteurs ReadLine lire une ligne à la fois.
Donc, pour commencer à lire à la ligne n ° 2, vous liriez la première ligne et jeter puis lire des lignes jusqu'à ce que la ligne n ° 5.
Eh bien, si le contenu est un texte tout simplement comme ça, vous devez utiliser la méthode ReadLine du StreamReader.
http://msdn.microsoft.com /en-us/library/system.io.streamreader.readline.aspx
-Oisin