InputStreamReader.markSupported is false

I need to “un-read” characters from an InputStreamReader. For that purpose I wanted to use mark and reset but markSupported returns false for the InputStreamReader class, since it doesn’t maintain an internal buffer and/or queue of characters.

I know about BufferedInputStream and PushbackInputStream but neither is appropriate here since they buffer on byte basis, while I need characters.

Does Java offer a buffered character reader which can un-read characters? Actually, let me constrain that further, I only ever need to un-read a single character (for lookahead purposes). Do I really need to maintain my own lookahead?

Answers


The two byte-stream based classes java.io.BufferedInputStream and java.io.PushbackInputStream have their character-stream based counterparts in the same package:

java.io.PushbackReader
java.io.BufferedReader

Have you tried java.io.BufferedReader?


You could wrap the input stream using a BufferedReader

Reader markedReader = new BufferedReader(inputStreamReader) ;

The buffered reader does support mark and reads characters.


Need Your Help

Android UI glitch when setting ActionBar color

android user-interface android-fragments android-actionbar visual-glitch

Together with friends I have created an Android app and I have a strange issue connected with the UI.

Un-archiving a file in Amazon Web Service S3

python json amazon-s3 amazon-web-services zip

Currently working on a project I'm uploading a series of JSON files to Amazon S3 to be received by mobile clients.