Найти Ρ‚Π΅ΠΌΡƒ
73 подписчика

πŸ–₯ Π£Π²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ BufferedReader


Π’ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ классу Reader Π΄Π°Π½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅: "BufferedReader считываСт тСкст ΠΈΠ· символьного ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π²ΠΎΠ΄Π°, буфСризируя ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Π΅ символы. ИспользованиС Π±ΡƒΡ„Π΅Ρ€Π° ΠΏΡ€ΠΈΠ·Π²Π°Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чтСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ°".

Вопрос: ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ использованиС Π±ΡƒΡ„Π΅Ρ€Π° ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с использованиСм ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… Ρ€ΠΈΠ΄Π΅Ρ€ΠΎΠ²?

"ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅" (Ρ‚.Π΅. Π½Π΅ ΠΎΠ±Ρ‘Ρ€Π½ΡƒΡ‚Ρ‹Π΅ Π² BufferedReader) Ρ€ΠΈΠ΄Π΅Ρ€Ρ‹ Π·Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ символов ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΠΊ источнику (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„Π°ΠΉΠ»Ρƒ), Ρ‡Ρ‚ΠΎ являСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Ρ‚Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π΄Π΅Π»ΠΎΠΌ. НапримСр, Ρƒ вас Π΅ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ», содСрТащий Π² сСбС довольно ΠΌΠ½ΠΎΠ³ΠΎ символов, ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ посимвольно ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ FileReader. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ваш Π²Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° read(), Ρ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ΄ΠΈΠ½ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ символ, Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ, ΠΈ Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π½Π΅ΠΌΡƒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·, сколько Π² Π½Ρ‘ΠΌ имССтся символов.

А BufferedReader ΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ обращаСтся ΠΊ источнику, считываСт ΠΎΡ‚Ρ‚ΡƒΠ΄Π° сразу ΠΌΠ½ΠΎΠ³ΠΎ символов (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 8192), занося ΠΈΡ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ массив, ΠΈ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² read() ΠΈΠ»ΠΈ readLine() символы Π±ΡƒΠ΄ΡƒΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ ΠΈΠ· этого массива, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Ссли Π²Ρ‹ Π·Π°Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ посимвольно ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ тСкстовый Ρ„Π°ΠΉΠ», Π½ΠΎ ΡƒΠΆΠ΅ с использованиСм BufferedReader, Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° read() сразу 8192 символа Π±ΡƒΠ΄Π΅Ρ‚ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, ΠΈ ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π°Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° символы просто Π±ΡƒΠ΄ΡƒΡ‚ Π±Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°.

Π—Π°ΠΌΠ΅Ρ€ΠΈΠΌ врСмя чтСния тСкстового Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, состоящСго ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΈΠ· ста тысяч символов, Π±Π΅Π· использования BufferedReader ΠΈ с Π½ΠΈΠΌ.

Π‘Π΅Π· использования BufferedReader:

long start = System.currentTimeMillis();
try(FileReader fileReader = new FileReader("sometxt.txt")) {
int i;
do {
i = fileReader.read();
} while (i != -1);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Time: " + (System.currentTimeMillis() - start));
Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Time: 428
А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ с использованиСм BufferedReader:

long start = System.currentTimeMillis();
try(BufferedReader bufferedReader = new BufferedReader(new FileReader("sometxt.txt"))) {
int i;
do {
i = bufferedReader.read();
} while (i != -1);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Time: " + (System.currentTimeMillis() - start));

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Time: 100

1 ΠΌΠΈΠ½ΡƒΡ‚Π°