IV. Буферизоване введення-виведення
Операції введення-виведення в порівнянні з операціями в оперативній пам’яті виконуються дуже повільно. Для компенсації в оперативній пам’яті виділяється деяка проміжна область — буфер, в якому поступово накопичується інформація. Коли буфер заповнений, його вміст швидко переноситься процесором, буфер очищується і знову заповнюється інформацією. Життєвий приклад буфера — поштова скринька, в якій накопичуються листи. Ми кидаємо в нього листа і йдемо в своїх справах, не очікуючи приїзду поштової машини. Поштова машина періодично очищує поштову скриньку, переносячи відразу велику кількість листів.
Класи файлового введення-виведення не займаються буферизацією. Для цієї мети є чотири спеціальні класи BufferedXxx, перечислені вище. Вони приєднуються до потоків введення-виведення як «перехідне кільце», наприклад:
BufferedReader br = new BufferedReader(isr);
BufferedWriter bw = new BufferedWriter(fw);
Програма лістингу, поданого нижче, читає текстовий файл, написаний в кодуванні СР866, і записує його вміст у файл в кодуванні KOI8_R. При читанні і записі застосовується буферизація. Ім’я вихідного файлу задається в командному рядку параметром args[0], ім’я копії — параметром args[]:
import java.io.*;
class DOStoUNIX{
public static void main(String[] args) throws IOException{
if (args.length != 2){
System.err.println("Usage: DOStoUNIX Cp866file KOI8_Rfile");
Дата добавления: 2014-12-10; просмотров: 981;