Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Java / Лабы / lab8

.pdf
Скачиваний:
59
Добавлен:
15.03.2015
Размер:
422.11 Кб
Скачать

Лабораторная работа 8

ОБРАБОТКА ТЕКСТОВЫХ ФАЙЛОВ

Цель лабораторной работы

Освоить работу с текстовыми файлами с использованием средств Java.

Задание на лабораторную работу

Написать программу, которая считает количество слов в заданном пользователем текстовом файле.

Указания к выполнению лабораторной работы

Для работы с текстовыми файлами в Java имеются классы FileReader и FileWriter. Первый класс предназначен для чтения файлов, второй – для записи. Методы, предназначенные для работы с файлами, могут бросать исключения, являющиеся наследниками класса исключения IOException. Открыть текстовый файл для чтения можно, создав экземпляр класса FileReader и передав в конструктор имя файла. Конструктор класса

FileReader может бросить исключение FileNotFoundException. Это означает,

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

Все классы для работы с файлами находятся в пакете java.io. Поэтому, чтобы использовать их в своей программе, нужно написать в начале текста программы:

import java.io.*;

Алгоритм чтения файла, учитывающий возможные исключения, выглядит следующим образом:

FileReader reader = null; try {

reader = new FileReader("example.txt");

// Работа с файлом

}catch (FileNotFoundException e) { System.err.println("File not found: " +

e.getMessage());

}catch (IOException e) { System.out.println("IO exception: " +

e.getMessage());

}finally {

if (reader != null) { try {

reader.close();

}catch (IOException e) {}

}

}

Чтобы прочитать один символ из текстового файла, необходимо вызвать метод read(). Этот метод читает один символ из файла и передвигает внутренний указатель таким образом, что следующий вызов read() прочитает следующий символ файла. Метод read() возвращает значение типа int. Если это значение является неотрицательным числом, младший байт этого числа содержит прочитанный символ. Если это значение равно -1, достигнут конец файла.

Пример посимвольного чтения файла с выводом каждого символа на консоль:

int s = 0;

while((s = reader.read()) != -1) { char ch = (char) s; System.out.println(ch);

}

Для того, чтобы посчитать количество слов в текстовом файле, можно промоделировать детерминированный конечный автомат (рис. ).

Пробельный символ

Внутри слова

Вне слова

Буква (увеличение счетчика слов на 1)

Рис. Детерминированный конечный автомат для подсчѐта количества слов.

В любой момент времени автомат может находиться в одном из двух состояний: внутри слова либо вне слова. Начальным является состояние «вне слова». При чтении нового символа может быть осуществлен переход из одного состояния в другое. Если был прочитан пробельный символ, а автомат находится в состоянии «внутри слова», он переходит в состояние «вне слова». Если автомат находится в состоянии «вне слова», и была прочитана буква, автомат переходит в состояние «внутри слова». При переходе в состояние «внутри слова» счетчик слов увеличивается на единицу.

Результат выполнения лабораторной работы

В результате выполнения лабораторной работы должна быть написана программа для подсчета слов в текстовом файле.

Соседние файлы в папке Лабы