2009-11-03 15 views
1

Je dois "décoder" les caractères d'un InputStreamReader. Pour cela, j'ai voulu utiliser mark et reset mais markSupported renvoie false pour la classe InputStreamReader, car il ne gère pas de mémoire tampon interne et/ou de file d'attente de caractères.InputStreamReader.markSupported est faux

Je connais environ BufferedInputStream and PushbackInputStream mais ni l'un ni l'autre ne convient ici car ils tamponnent sur une base octet, alors que j'ai besoin des caractères.

Est-ce que Java offre un lecteur de caractères avec tampon qui peut annuler la lecture des caractères? En fait, permettez-moi de contraindre cela plus loin, je n'ai jamais besoin de ne pas lire un seul caractère (à des fins de lookahead). Ai-je vraiment besoin de maintenir mon propre lookahead?

Répondre

7

Les deux homologues basés octet-stream classes basées java.io.BufferedInputStream et java.io.PushbackInputStream ont leur caractère courant dans le même paquet:

java.io.PushbackReader 
java.io.BufferedReader 
+0

Merci beaucoup. Je ne suis toujours pas à la maison dans le nommage de classe de flux. Ni dans .NET, d'ailleurs, même si j'utilise les classes .NET depuis plus de sept ans maintenant. –

3

Avez-vous essayé java.io.BufferedReader?

2

Vous pouvez envelopper le flux d'entrée en utilisant un BufferedReader

Reader markedReader = new BufferedReader(inputStreamReader) ; 

Le lecteur tampon ne marque de support et lit des caractères.