| |
оту приложений с потоками, так как при ее
использовании сокращается количество обращений к системе ввода/вывода. Вы
можете постепенно в течении дня добавлять в поток данные по одному байту, и
только к вечеру эти данные будут физически записаны в файл на диске.
Во многих случаях, однако, приложение должно, не отказываясь совсем от
буферизации, выполнять принудительную запись буферов в файл. Это можно сделать
с помощью метода flush.
Приложение StreamDemo
Приложение StreamDemo было создано нами специально для того чтобы
продемонстрировать наиболее распространенный способ работы с файлами через
буферизованные форматированные потоки.
Действия, выполняемые этим приложением, достаточно просты. Вначале
приложение выводит на консоль приглашение для ввода строки. Затем введенная
строка записывается в файл через выходной буферизованный форматированный поток.
После этого созданный файл читается через входной буферизованный поток. Его
содержимое (введенная ранее строка) отображается на экране.
Исходный текст приложения
Исходный текст приложения StreamDemo представлен в листинге 2.2.
Листинг 2.2. Файл StreamDemo\StreamDemo.java
// =========================================================
// Демонстрация использования потоков для работы с файлами
//
// (C) Фролов А.В, 1997
//
// E-mail: [email protected]
// WWW: http://www.glasnet.ru/~frolov
// или
// http://www.dials.ccas.ru/frolov
// =========================================================
import java.io.*;
public class StreamDemo
{
// -------------------------------------------------------
// main
// Метод, получающий управление при запуске приложения
// -------------------------------------------------------
public static void main(String args[])
{
// Выходной поток
DataOutputStream OutStream;
// Входной поток
DataInputStream InStream;
// Массив для ввода строки с клавиатуры
byte bKbdInput[] = new byte[256];
// Введенная строка, которая будет записана в поток
String sOut;
// Выполняем попытку вывода на консоль строки
// приглашения
try
{
// Выводим строку приглашения
System.out.println("Hello, Java!\n" +
"Enter string and press ...");
// Читаем с клавиатуры строку для записи в файл
System.in.read(bKbdInput);
// Преобразуем введенные символы в строку типа String
sOut = new String(bKbdInput, 0);
}
catch(Exception ioe)
{
// При возникновении исключения выводим его описание
// на консоль
System.out.println(ioe.toString());
}
// Выполняем попытку записи в выходной поток
try
{
// Создаем выходной буферизованный поток данных
OutStream = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("output.txt")));
// Записываем строку sOut в выходной поток
OutStream.writeBytes(sOut);
// Сбрасываем содержимое буфера вывода
OutStream.flush();
// Закрываем выходной поток
OutStream.close();
}
catch(Exception ioe)
{
System.out.println(ioe.toString());
}
// Выполняем попытку чтения из файла
try
{
// Создаем входной буферизов
|
|