I can't figure out what you're trying to do here. I imagine some of this code is "testing" code, but still, I don't see the point. In any case, maybe you could explain your observations: i.e., what you expected to see, and what you see instead. Not what you think you're seeing, but what you actually, physically see on your monitor.
Note that there's a class "StringReader" which provides a Reader interface based on the data in a String. If you used StringReader, you wouldn't have to call getBytes(), or use ByteArrayInputStream or InputStreamReader; your code would be a little cleaner.