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

  • Применение класса FileWriter

  • Применение класса FileReader

  • Ответы на вопросы по ревью 4. Java io. Ключевым понятием здесь является понятие потока


    Скачать 1.93 Mb.
    НазваниеJava io. Ключевым понятием здесь является понятие потока
    Дата03.07.2022
    Размер1.93 Mb.
    Формат файлаdoc
    Имя файлаОтветы на вопросы по ревью 4.doc
    ТипДокументы
    #623608
    страница13 из 39
    1   ...   9   10   11   12   13   14   15   16   ...   39

    Ввод-вывод в файлы через символьные потоки


    На практике чаще всего приходится обращаться с файлами, имеющими байтовую организацию, тем не менее, для этой цели можно пользоваться символьными потоками. Преимущество символьных потоков заключается в том, что они оперируют непосредственно символами в уникоде. Так, если требуется сохранить текст в уникоде, для этой цели лучше всего воспользоваться символьными потоками. Как правило, для файлового ввода-вывода символов служат классы FileReader и FileWriter.

    Применение класса FileWriter


    Класс FileWriter представляет поток, через который можно осуществлять запись данных в файл. Ниже приведены общие формы объявления двух наиболее часто употребляемых конструкторов данного класса.

    FileWriter(String имя_файла) throws IOException

    FileWriter(String имя_файла, boolean append) throws IOException

    Здесь имя файла обозначает полный путь к файлу. Если параметр append принимает логическое значение true, данные записываются в конец файла, а иначе они перезаписывают прежние данные на том же месте в файле. При возникновении ошибки в каждом из указанных выше конструкторов генерируется исключение IOException. Класс FileWriter является производным от классов OutputStreamWriter и Writer. Следовательно, в нем доступны методы, объявленные в его суперклассах.

    Ниже приведен краткий пример программы, демонстрирующий ввод текстовых строк с клавиатуры и последующий их вывод в файл test. txt. Набираемый текст читается до тех пор, пока пользователь не введет слово "stop". Для вывода текстовых строк в файл используется класс FileWriter.

    // Простой пример утилиты ввода с клавиатуры и вывода данных

    // на диск, демонстрирующий применение класса FileWriter.

    // Для компиляции этого кода требуется JDK 7

    // или более поздняя версия данного комплекта.

    import java.io.*;

    class KtoD {

    public static void main(String args[])

    {

    String str;

    BufferedReader br =

    new BufferedReader(

    new InputStreamReader(System.in));

    System.out.println("Enter text ('stop' to quit).");
    // Создание потока вывода типа FileWriter.

    try (FileWriter fw = new FileWriter("test.txt"))

    {

    do {

    System.out.print(": ");

    str = br.readLine();

    if(str.compareTo("stop") == 0) break;

    str = str + "\r\n"; // add newline

    // Запись текстовых строк в файл,

    fw.write(str);

    } while(str.compareTo("stop") != 0) ;

    } catch(IOException exc) {

    System.out.println("I/O Error: " + exc);

    }

    }

    }

    Применение класса FileReader


    В классе FileReader создается объект типа Reader, который можно использовать для чтения содержимого файла. Чаще всего употребляется такой конструктор этого класса:

    FileReader(String имя_файла) throws FileNotFoundException

    где имя файла обозначает полный путь к файлу. Если указанный файл не существует, генерируется исключение FileNotFoundException. Класс FileReader является производным от классов InputStreamReader и Reader. Следовательно, в нем доступны методы, объявленные в его суперклассах.

    Приведенный ниже пример демонстрирует простую утилиту для отображения на экране содержимого текстового файла test. txt. Она является своего рода дополнением к утилите, рассмотренной в предыдущем разделе.

    // Простая утилита ввода с дйска и вывода на экран,

    // демонстрирующая применение класса FileReader.
    // Для компиляции этого кода требуется JDK 7

    // или более поздняя версия данного комплекта.

    import java.io.*;
    class DtoS {

    public static void main(String args[]) {

    String s;

    // Создание в классе BufferedReader оболочки с целью заключить

    // в нее класс FileReader и организовать чтение данных из файла.

    try (BufferedReader br = new BufferedReader(new FileReader("test.txt")))

    {

    while((s = br.readLine()) != null) {

    System.out.println(s) ;

    }

    } catch(IOException exc) {

    System.out.println("I/O Error: " + exc) ;

    }

    }

    }

    Обратите внимание на то, что для потока типа FileReader создана оболочка в классе BufferedReader. Благодаря этому появляется возможность обращаться к методу readLine(). Кроме того, закрытие потока типа BufferedReader, на который в данном примере ссылается переменная br, автоматически приводит к закрытию файла.

    1   ...   9   10   11   12   13   14   15   16   ...   39


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