nextLine
和 readLine
有什么区别?我知道 readLine
已被缓冲。这是否意味着它是可变的?如果它是可变的,那么可变意味着什么?我以为当我们使用nextLine
时,在命令提示符中输入一些内容后,它会被记录下来,并且删除不起作用,但事实并非如此。我发现两者的工作原理相同。
我尝试了不同类型的程序,交替使用
readLine
和nextLine
,但我似乎找不到任何变化。
使用
Scanner.nextLine()
进行基本控制台输入处理,使用 BufferedReader.readLine()
进行高级输入/输出操作或从文件中读取大型数据集。
Scanner.nextLine()适合解析来自控制台的输入或分隔输入,自动移至下一行。
BufferedReader.readLine() 对于从文件或网络连接等输入流读取文本行非常有效,并对 I/O 错误进行详细的异常处理。
来自官方文档:
使扫描仪前进到当前行并返回跳过的输入。此方法返回当前行的其余部分,不包括末尾的任何行分隔符。该位置设置为下一行的开头。 由于此方法继续搜索输入以查找行分隔符,因此如果不存在行分隔符,它可能会缓冲搜索要跳过的行的所有输入。
返回被跳过的行。
例外情况:
:如果没有找到线路。NoSuchElementException
:如果此扫描仪已关闭。IllegalStateException
来自官方文档:
读取一行文本。一行被认为由任何一个换行符 (' '), 回车符 (' '),或回车后紧跟换行符。
返回包含行内容的
,不包括任何行终止字符,或者如果已到达流末尾则返回String
。null
例外情况:
:如果发生 I/O 错误。IOException
职位晋升:
Scanner.nextLine()
:将扫描仪移动到下一行,将位置设置在该行的开头。BufferedReader.readLine()
:读取到行终止符,并且不会根据流位置自动前进到下一行。行终止符:
Scanner.nextLine()
:返回没有行分隔符的当前行,并且可以缓冲输入以查找行分隔符。BufferedReader.readLine()
:返回没有行终止符的行('
','
', 或者 '
').异常处理:
Scanner.nextLine()
:如果未找到线,则抛出 NoSuchElementException
;如果扫描仪关闭,则抛出 IllegalStateException
。BufferedReader.readLine()
:针对 I/O 错误抛出 IOException
。直播结束:
Scanner.nextLine()
:到达输入流末尾时未明确指定的行为,通常类似于NoSuchElementException
。BufferedReader.readLine()
:遇到流结尾时返回null
。