3 回答

TA贡献1777条经验 获得超10个赞
Scanner
BufferedReader
BufferedReader
scanner

TA贡献1780条经验 获得超1个赞
BufferedReader是一个简单的类,目的是有效地从底层流中读取。通常,像FileReader一样,每个由Reader发出的读取请求都会导致向底层流发出相应的读取请求。每次调用read()或readLine()都会导致从文件中读取字节,转换为字符,然后返回,这可能非常低效。如果读取器在BufferedReader中被扭曲,效率会显著提高。
BufferedReader是同步的,因此可以安全地从多个线程对BufferedReader进行读取操作。
另一方面,扫描仪内置了更多的奶酪;它可以完成BufferedReader所能做的所有事情,而且效率也是一样的。但是,扫描程序还可以使用正则表达式解析基本类型和字符串的底层流。它还可以使用您选择的分隔符来标记底层流。它还可以对底层流进行前向扫描,而不考虑分隔符!
然而,扫描器并不是线程安全的,它必须是外部同步的。
选择使用BufferedReader或Scaner取决于您正在编写的代码,如果您正在编写一个简单的日志读取器缓冲读取器就足够了。但是,如果您正在编写XML解析器,则扫描程序是更自然的选择。
即使在读取输入时,如果希望逐行接受用户输入并将其添加到文件中,那么BufferedReader就足够了。另一方面,如果希望将用户输入接受为具有多个选项的命令,然后打算根据指定的命令和选项执行不同的操作,则扫描器将更适合。
添加回答
举报