Le suivi de la position de la ligne d'un streamreader
Salut les gars ce que je dois faire est de suivre la position de la ligne que je suis la lecture à partir du lecteur de flux quand je dis reader.ReadLine()
j'ai besoin de connaître la position de la ligne dans le fichier et je veux aussi être capable de lire ensuite le fichier à partir de la position que j'ai déjà suivis.
Est-ce possible? Si donc s'il vous plaît aider.
Aide est très appréciée
Merci d'avance.
De quoi avez-vous besoin de cela, quelle est la taille des fichiers, ...
OriginalL'auteur johnnie | 2012-04-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire de trois façons:
1) Écrivez votre propre StreamReader. Voici un bon endroit pour commencer: Comment connaître la position(linenumber) d'un streamreader dans un fichier texte?
2) La classe StreamReader dispose de deux très importants, mais privé des variables appelées charPos et charLen qui sont nécessaires à la localisation de la "lecture" et pas seulement de la position sous-jacente de la rivière. Vous pouvez utiliser la réflexion pour obtenir les valeurs comme l'a suggéré ici
3), il suffit de lire l'intégralité du fichier dans un tableau de chaînes. Quelque chose comme ceci:
Une autre possibilité (le long des mêmes lignes n ° 3) est à lire dans les lignes et de stocker la ligne dans un tableau. Si vous voulez lire l'état de la ligne, il suffit d'utiliser le tableau.
peut-être en créant le BaseStream.Position = N et en utilisant StreamReader.Read(). Je pense qu'il serait préférable de garder votre propre collection de cache des lignes de sorte que vous pouvez re-lecture de tout ligne par numéro de ligne sans revenir sur le fichier lui-même. Cependant, cela peut présenter des problèmes de mémoire avec de gros fichiers.
Êtes-vous sûr que l'option 2) est en sécurité lorsqu'une résolution de 1024*N limite des tranches d'une longue char en 2 morceaux?
Option #2 est ce que je suis allé avec, mais le code n'est pas correct. Ce que j'utilise actuellement est ici: stackoverflow.com/a/17457085/530545
option 2 ne fonctionnent pas correctement lors de l'utilisation d'un encodage à ne pas créer de 1 de 1 de codage de caractères d'octets. voir ma solution ici: stackoverflow.com/a/22975649/718033 (Edit: ma solution semble très similaire à Granger)
OriginalL'auteur Chris Gessler
Peut-être cela peut vous aider à
Utilisation:
OriginalL'auteur Fernando Diaz Toledano