2009-02-26 4 views
0

Comment spécifiez-vous où commencer à lire dans un fichier lorsque vous utilisez StreamReader?Comment spécifiez-vous où commencer à lire dans un fichier lorsque vous utilisez StreamReader?

J'ai créé un objet streamreader, avec un objet de flux de fichiers. Une fois les deux objets créés, comment devrais-je contrôler où StreamReader doit commencer à lire dans 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 pourrais-je contrôler la StreamReader pour lire, disons # 2? Aussi, comment pourrais-je aussi contrôler où l'arrêter de lire par un délimiteur similaire comme à # 5?

Edit: Par delimiter Je veux dire, une façon de faire la lecture à partir StreamReader commencer (« 2. »)

+0

Si vous voulez ignorer les lignes marquées comme des commentaires, il est beaucoup plus facile de les lire normalement, puis filtrer. –

Répondre

1

Essayez-vous désérialiser un fichier dans un objet en mémoire? Si oui, vous pouvez simplement analyser le fichier entier en utilisant ReadLine ou quelque chose de similaire, stocker chaque ligne, puis y accéder via une structure de données telle qu'un KeyValuePair<int, string>.

Mise à jour: Ok ... Avec les nouvelles infos, je pense que vous avez deux options. Si vous cherchez à lire jusqu'à trouver une correspondance, vous pouvez Peek(), vérifiez si le personnage est celui que vous recherchez, puis Read(). Alternativement, si vous cherchez une position définie, vous pouvez simplement Read() beaucoup de caractères et jeter la valeur de retour.

Si vous recherchez un délimiteur complexe, vous pouvez lire la ligne entière ou même le fichier entier en mémoire et utiliser Regular Expressions.

espoir qui aide ...

1

Si le fichier contient la nouvelle ligne délimiteurs vous pouvez utiliser ReadLine pour lire une ligne à la fois. Donc, pour commencer à lire à la ligne 2, vous devez lire la première ligne et la rejeter puis lire les lignes jusqu'à la ligne 5.

Questions connexes