@anjan b:
or I could just post non-constructive answers to other people's questions. Ryan P's suggestion to use RandomAccessReader makes your post moot at best.
@Zarkonnen:
I UNDERSTAND and DISLIKE the mark/reset paradigm. Your post implies I dislike it because I don't get it. Incorrect. I don't believe I should have to write code that's aware of the structure and length of the file it's buffering in order to simply go to an arbitrary point in it.
I should be able to call mark() before I read the nth line/char/String and go back there whenever I please, not if and only if I haven't passed some arbitrary number.
What's worse is the way the behavior exhibited if you incorrectly compute/guess/estimate the readAheadLimit.
Suffice it to say, anyone who like cookie dough will be in for a treat because mark()/reset() is definitely half-baked.
Thanks again to everyone who posted. I enjoyed thinking about and discussing the issue from all angles.