Java StringReader 读取超出输入的范围.这是错误还是预期行为



试试这段代码 -

import java.io.StringReader;
public class StringReaderTest
{
    public static void main(String[] args) throws Exception
    {
        String sampleString = "abcdefg";
        StringReader reader = new StringReader(sampleString);
        for(int i=0; i<40; i++)
        {
            char c = (char) reader.read();
            System.out.print(c);
        }
    }
}

输出为 -

abcdefg?????????????????????????????????

因此,读者实际上阅读了输入的末尾。我的印象是,当它试图读取超出"g"时,它应该抛出一个异常,但它没有。相反,它返回了一个"?"字符。这是一个错误还是这是预期行为?

在这种情况下,文档非常清楚:

StringReader.read()

返回:读取的字符,如果已到达流的末尾,则返回 -1

根据

http://docs.oracle.com/javase/1.4.2/docs/api/java/io/StringReader.html#read%28%29 如果流的末尾已到达,则StringReader.Read()返回-1。它不会抛出 IOException,除非有其他类型的错误。

相关内容

  • 没有找到相关文章

最新更新