Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
/ В классе Help открывается файл со справочной информацией,
производится поиск названия темы, а затем отображается
справочная информация по этой теме.
Обратите внимание на то, что в этом классе поддерживаются
все исключения, освобождая от этой обязанности вызывающий код. /
class Help {
String helpfile; // Имя файла со справочной информацией
Help(String fname) {
helpfile = fname;
}
// отобразить справочную информацию по заданной теме
boolean helpon(String what) {
int ch;
String topic, info;
// открыть справочный файл
try (BufferedReader helpRdr =
new BufferedReader(new FileReader(helpfile)))
{
do {
// читать символы до тех пор, пока не встретится знак #
ch = helpRdr.read();
// а теперь проверить, совпадают ли темы
if(ch =='#') {
topic = helpRdr.readLine();
if(what.compareTo(topic) == 0) { // тема найдена
do {
info = helpRdr.readLine();
if(info != null) System.out.println(info);
} while((info != null) &&
(info.compareTo("") != 0));
return true;
}
}
} while(ch != -1);
}
catch(IOException exc) {
System.out.println("Error accessing help file.");
return false;
}
return false; // тема не найдена
}
// получить тему
String getSelection() {
String topic = "";
BufferedReader br = new BufferedReader(
new InputStreamReader(System.in));
System.out.print("Enter topic: ");
try {
topic = br.readLine();
}
catch(IOException exc) {
System.out.println("Error reading console.");
}
return topic;
}
}
// продемонстрировать справочную систему, находящуюся на диске
class FileHelp {
public static void main(String args[]) {
Help hlpobj = new Help("helpfile.txt");
String topic;
System.out.println("Try the help system. " +
"Enter ’stop' to end.");
do {
topic = hlpobj.getSelection ();
if(!hlpobj.helpon(topic))
System.out.println("Topic not found.\n");
} while(topic.compareTo("stop") != 0);
}
}
```
Упражнение для самопроверки
по материалу главы 10
Для чего в Java определены как байтовые, так и символьные потоки?
Как известно, ввод-вывод данных на консоль осуществляется в текстовом виде. Почему же в Java для этой цели используются байтовые потоки?
Как открыть файл для чтения байтов?
Как открыть файл для чтения символов?
Как открыть файл для ввода-вывода с произвольным доступом?
Как преобразовать числовую строку "123.23" в двоичный эквивалент?
Напишите программу, которая будет копировать текстовые файлы. Видоизмените ее таким образом, чтобы все пробелы заменялись дефисами. Используйте при написании программы классы, представляющие байтовые потоки, а также традиционный способ закрытия файла явным вызовом метода close ().
Перепишите программу, созданную в ответ на предыдущий вопрос, таким образом, чтобы в ней использовались классы, представляющие символьные потоки. На этот раз воспользуйтесь оператором try с ресурсами для автоматического закрытия файла.
К какому типу относится поток System. in?
Что возвращает метод read () из класса InputStream по достижении конца потока?
Поток какого типа используется для чтения двоичных данных?
Классы Reader и Writer находятся на вершине иерархии классов _ .
Оператор try без ресурсов служит для __ .
Если для закрытия файла используется традиционный способ, то это лучше всего делать в блоке finally. Верно или неверно?
Глава 11
Многопоточное программирование
Основные навыки и понятия