我正在尝试逐步从文本文件中读取x个字符。所以,如果我有:aaaaabbbbbcccccabckcka和我一共阅读5,我会得到,aaaaa,bbbbb,ccccc,abckc和ka。我正在使用的代码是:
status = is.read(bytes);
text = new String(bytes);
其中bytes是:bytes = new byte [5],我调用这两行代码直到status变为-1,我面临的问题是,输出不是我上面提到的,但是我得到了这个:
aaaaa,bbbbb,ccccc,abckc和kackc,注意最后一段'kackc'是垃圾,为什么会这样?
注意:字节在读取循环之外初始化一次。
答案 0 :(得分:1)
您当前的解决方案适用于ASCII,但其他编码中的许多字符使用多个字节。您应该分别使用Reader
和char[]
而不是InputStream
和byte[]
。
答案 1 :(得分:0)
事实证明,我每次读取新输入时都需要清除字节缓冲区,我只是使用for循环将其清零并且工作正常