Réinitialiser le tampon avec BufferedReader en Java?
Je suis l'aide de la classe BufferedReader pour lire ligne par ligne dans la mémoire tampon. Lors de la lecture de la dernière ligne dans le tampon, je veux commencer la lecture à partir du début de la mémoire tampon de nouveau.
J'ai lu à propos de la marque() et reset(), je ne suis pas sûr de son utilisation, mais je ne pense qu'ils peuvent aider à me sortir de cette.
Personne ne sait comment faire pour démarrer la lecture à partir du début de la mémoire tampon après avoir atteint la dernière ligne? Comme nous pouvons utiliser la méthode seek(0) de la RandomAccessFile? S'il vous plaît.
Grâce
source d'informationauteur ipkiss
Vous devez vous connecter pour publier un commentaire.
marque/reset est ce que vous voulez, mais vous ne pouvez pas vraiment l'utiliser sur le BufferedReader, car il ne peut remettre un certain nombre d'octets (la taille de la mémoire tampon). si votre fichier est plus grand que cela, il ne fonctionne pas. il n'y a pas de "simple" moyen de le faire (malheureusement), mais il n'est pas trop dur à gérer, vous avez juste besoin d'un manche à l'origine FileInputStream.
(noter que l'utilisation de jeux de caractères par défaut n'est pas recommandé, juste à l'aide d'un exemple simplifié).
Oui, mark et reset sont les méthodes que vous souhaitez utiliser.
Cela a fonctionné pour moi à résoudre ce problème. Je suis en train de lire dans un fichier ligne par ligne. Je suis en train de faire un BufferedReader très tôt dans mon programme. J'ai ensuite vérifier si readLine est nulle et effectuer une myFile.fermez, puis une nouvelle BufferedReader. La première passe par, le readLine variable sera nulle depuis que j'ai mis de cette façon à l'échelle mondiale et ensuite n'ai pas fait d'readLine encore. La variable est définie à l'échelle mondiale et la valeur null. En conséquence, un proche et new BufferedReader qui se passe. Si je ne fais pas un BufferedReader au tout début de mon programme, alors ce myFile.fermer jette un NPE sur la première passe.
Alors que le fichier est à lire ligne par ligne, ce test échoue depuis la readLine n'est pas null, il ne se passe rien dans le test et le reste de l'analyse du fichier continue.
Plus tard, lorsque les readLine obtient à l'EOF, il est apprécié comme nulle nouveau. C'est à dire: La seconde passe par cette case a également fait un myFile.fermer et new BufferedREader qui réinitialise le readLine retour au début.
Effectivement, à l'intérieur de ma boucle ou à l'extérieur de ma boucle, cette action n'arrive qu'au readLine variable globalement définie à null ou à des expressions du FOLKLORE. Dans les deux cas, je fais un "reset" pour revenir au début du fichier et une nouvelle BufferedReader.