Главная страница
Навигация по странице:

  • Объект

  • 33 Java. Потоки ввода-вывода. Работа с файлами. Белорусский государственный экономический университет кафедра экономической информатики


    Скачать 1.6 Mb.
    НазваниеБелорусский государственный экономический университет кафедра экономической информатики
    Дата06.01.2023
    Размер1.6 Mb.
    Формат файлаdocx
    Имя файла33 Java. Потоки ввода-вывода. Работа с файлами.docx
    ТипЛитература
    #874813
    страница7 из 13
    1   2   3   4   5   6   7   8   9   10   ...   13

    Работа с FileWriter и FileReader


    Отметим, что работа с классом FileWriter ничем не отличается от работы с классом FileOutputStream. Все можно свести к замене наименования классов.

    Однако с подклассом FileReader такое утверждение, к сожалению, не верно. Рассмотрим более подробно правила работы с подклассом FileReader.

    Первое что необходимо отметить, что при работе с FileReader необходимо объявить не только объект этого класса, но еще и объект класса Scaner. При этом конструктор Scaner-а должен быть проинициализирован уже созданным объектом FileReader-а. Формат:
    FileReader Объект = new FileReader("Путь+имяФайла");

    Scanner ОбъектСканера = new Scanner(Объект);
    Далее необходимо использовать методы класса Scanner, уже обсужденные выше.
    Пример.

    FileReader fr= new FileReader("file1.txt"); Scanner scan = new Scanner(fr);

    while (scan.hasNextLine()) { System.out.println(scan.nextLine());

    }
    Замечание.

    Работа с методамиnextLine() и hasNextLine() полностьюаналогичнаиспользованиюитераторовв коллекциях
    Переделаем последний пример предыдущего пункта на использование объектов подкласса FileWriter суперкласса Writer и подкласса FileReader суперкласса Reader. В отличие от предыдущего примера, выполним запись, а затем чтение из одного и того же файла.

    Отличительной особенностью исполнения данного примера является разделение работы с файлами на методы.

    Кроме того, в данном примере исключительная ситуация будет пробрасываться через цепочку вызовов методами Java-машине через конструкцию throws Исключение.
    Пример.




    Результат работы программы:



    Буферизованные потоки


    Для оптимизации операций ввода-вывода используются буферизуемые потоки. Эти потоки добавляют к стандартным специальный буфер в памяти, с помощью которого повышается производительность при чтении и записи потоков.

    Класс BufferedOutputStream


    Класс BufferedOutputStream создает буфер для потоков вывода. Этот буфер накапливает выводимые байты без постоянного обращения к устройству. И когда буфер заполнен, производится запись данных.

    BufferedOutputStream определяет два конструктора:

    • BufferedOutputStream(OutputStream outputStream)

    • BufferedOutputStream(OutputStream outputStream,

    int bufSize)

    Первый параметр (outputStream) - это поток вывода, который унаследован от OutputStream, а второй параметр - размер буфера.

    Рассмотрим на примере записи в файл.
    Пример.


    Результат работы программы:



    Класс BufferedOutputStream в конструкторе принимает в качестве параметра объект OutputStream - в данном случае это файловый поток вывода FileOutputStream. И также производится запись в файл. Опять же BufferedOutputStream не добавляет много новой функциональности, он просто оптимизирует действие потока вывода.

    1   2   3   4   5   6   7   8   9   10   ...   13


    написать администратору сайта