3 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超10個(gè)贊
Scanner
BufferedReader
BufferedReader
scanner

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
BufferedReader是一個(gè)簡單的類,目的是有效地從底層流中讀取。通常,像FileReader一樣,每個(gè)由Reader發(fā)出的讀取請(qǐng)求都會(huì)導(dǎo)致向底層流發(fā)出相應(yīng)的讀取請(qǐng)求。每次調(diào)用read()或readLine()都會(huì)導(dǎo)致從文件中讀取字節(jié),轉(zhuǎn)換為字符,然后返回,這可能非常低效。如果讀取器在BufferedReader中被扭曲,效率會(huì)顯著提高。
BufferedReader是同步的,因此可以安全地從多個(gè)線程對(duì)BufferedReader進(jìn)行讀取操作。
另一方面,掃描儀內(nèi)置了更多的奶酪;它可以完成BufferedReader所能做的所有事情,而且效率也是一樣的。但是,掃描程序還可以使用正則表達(dá)式解析基本類型和字符串的底層流。它還可以使用您選擇的分隔符來標(biāo)記底層流。它還可以對(duì)底層流進(jìn)行前向掃描,而不考慮分隔符!
然而,掃描器并不是線程安全的,它必須是外部同步的。
選擇使用BufferedReader或Scaner取決于您正在編寫的代碼,如果您正在編寫一個(gè)簡單的日志讀取器緩沖讀取器就足夠了。但是,如果您正在編寫XML解析器,則掃描程序是更自然的選擇。
即使在讀取輸入時(shí),如果希望逐行接受用戶輸入并將其添加到文件中,那么BufferedReader就足夠了。另一方面,如果希望將用戶輸入接受為具有多個(gè)選項(xiàng)的命令,然后打算根據(jù)指定的命令和選項(xiàng)執(zhí)行不同的操作,則掃描器將更適合。
添加回答
舉報(bào)