- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Java: руководство для начинающих (ЛП) - Шилдт Герберт
Шрифт:
Интервал:
Закладка:
Таблица 10.5. Наиболее часто употребляемые методы вывода данных, определенные в классе DataOutputStreamМетод вывода данныхОписаниеvoid writeBoolean (boolean val)Записывает логическое значение, определяемое параметром valvoid writeByte (int,val)Записывает младший байт целочисленного значения, определяемого параметром valvoid writeChar (int,val)Записывает значение, определяемое параметром val, интерпретируя его как символvoid writeDouble (double val)Записывает значение типа double, определяемое параметром valvoid writeFloat (float val)Записывает значение типа float, определяемое параметром valvoid writelnt(int val)Записывает значение типа int, определяемое параметром valvoid writeLong (long val)Записывает значение типа long, определяемое параметром valvoid writeShort (int val)Записывает целочисленное значение, определяемое параметром val, преобразуя его в тип short
Ниже приведен конструктор класса DataOutputStream. Обратите внимание на то, что при вызове ему передается экземпляр класса OutputStream.DataOutputStream(OutputStream OutputStream)
где OutputStream — это поток вывода, в который записываются данные. Для того чтобы организовать запись данных в файл, следует передать конструктору в качестве параметра OutputStream объект типа FileOutputStream.
Класс DatalnputStream реализует интерфейс Datalnput, в котором объявлены методы для чтения всех простых типов данных в Java (табл. 10.6). В каждом из этих методов может быть сгенерировано исключение IOException при возникновении ошибки ввода-вывода. В качестве своего основания класс DatalnputStream использует экземпляр класса InputStream, перекрывая его методами для чтения различных типов данных в Java. Однако в потоке типа DatalnputStream данные читаются в двоичном виде, а не в удобной для чтения форме. Ниже приведен конструктор класса DatalnputStream.DatalnputStream(InputStream inputStream)
где inputStream — это поток, связанный с создаваемым экземпляром класса DatalnputStream. Для того чтобы организовать чтение данных из файла, следует передать конструктору в качестве параметра inputStream объект типа FilelnputStream.
Таблица 10.6. Наиболее часто употребляемые методы ввода данных, определенные в классе DatalnputStreamМетод ввода данныхОписаниеboolean readBoolean()Читает значение типа booleanbyte readByte()Читает значение типа bytechar readChar()Читает значение типа chardouble readDouble()Читает значение типа doublefloat readFloat()Читает значение типа floatint readlnt()Читает значение типа intlong readLong()Читает значение типа longshort readShort()Читает значение типа short
Ниже приведен пример программы, демонстрирующий применение классов DataOutputStream и DatalnputStream. В этой программе данные разных типов сначала записываются в файл, а затем читаются из файла.// Запись и чтение двоичных данных.Для компиляции этого кода// требуется JDK 7 или более поздняя версия данного комплекта.import java.io.*;class RWData { public static void main(String args[]) { int i = 10; double d = 1023.56; boolean b = true; // записать ряд значений try (DataOutputStream dataOut = new DataOutputStream(new FileOutputStream("testdata"))) { // Запись двоичных данных в файл testdata. System.out.println("Writing " + i) ; dataOut.writelnt(i); System.out.println("Writing " + d) ; dataOut.writeDouble(d); System.out.println("Writing " + b); dataOut.writeBoolean(b); System.out.println("Writing " + 12.2 * 7.4); dataOut.writeDouble(12.2 * 7.4); } catch(IOException exc) { System.out.println("Write error."); return; } System.out.println() ; // а теперь прочитать записанные значения try (DatalnputStream dataln = new DatalnputStream(new FilelnputStream("testdata"))) { // Чтение двоичных данных из файла testdata. i = dataln.readlnt(); System.out.println("Reading " + i) ; d = dataln.readDouble(); System.out.println("Reading " + d); b = dataln.readBoolean() ; System.out.println("Reading " + b); d = dataln.readDouble(); System.out.println("Reading " + d) ; } catch(IOException exc) { System.out.println("Read error."); } }}
Выполнение этой программы дает следующий результат:Writing 10Writing 1023.56Writing trueWriting 90.28Reading 10Reading 1023.56Reading trueReading 90.28
Пример для опробования 10.1.Утилита сравнения файлов
В этом проекте предстоит создать простую, ноочень полезную утилиту для сравнения содержимого файлов. В ходе выполнения этой сервисной программы сначала открываются двасравниваемых файла, а затем данные читаются из них и сравниваются по соответствующему количеству байтов. Если на какой-то стадии операция сравнения дает отрицательный результат, это означает, что содержимое обоих файлов не одинаково. Если же конецобоих файлов достигается одновременно, это означает, что они содержат одинаковыеданные.
Последовательность действий
Создайте файл CompFiles.java.
Введите в файл CompFiles.java приведенный ниже исходный код./*Для того чтобы воспользоваться этой программой, укажитеимена сравниваемых файлов в командной строке, например:java CompFile FIRST.TXT SECOND.TXTДля компиляции этого кода требуется JDK 7или более поздняя версия данного комплекта.*/import java.io.*;class CompFiles { public static void main(String args[]) { int i=0, j=0; // Прежде всего следует убедиться, что файлы были указаны, if(args.length !=2 ) { System.out.println("Usage: CompFiles fl f2"); return; } // сравнить файлы try (FilelnputStream fl = new FilelnputStream(args[0]); FilelnputStream f2 = new FilelnputStream(args[1])) { // проверить содержимое каждого файла do { i = f1.read(); j = f2.read(); if(i != j) break; } while (i != -1 && j != -1) ; if(i != j) System.out.println("Files differ."); else System.out.println("Files are the same."); } catch(IOException exc) { System.out.println("I/O Error: " + exc); } }}
Для опробования программы скопируйте сначала файл CompFiles. java во временный файл temp, а затем введите в командной строке следующее:java CompFiles CompFiles.java temp
Программа сообщит, что файлы одинаковы. Далее сравните файл CompFiles.java с рассмотренным ранее файлом CopyFile. j ava, введя в командной строке следующее:java CompFiles CompFiles.java CopyFile.java
Эти файлы содержат разные данные, о чем и сообщит программа CompFiles.
Попробуйте самостоятельно внедрить в программу CompFiles ряд дополнительных возможностей. В частности, введите в нее возможность выполнять сравнение без учета регистра символов. Программу CompFiles можно также доработать таким образом, чтобы она выводила место, где обнаружено первое отличие сравниваемых файлов.Файлы с произвольным доступом
До сих пор нам приходилось иметь дело с последовательными файлами, содержимое которых вводилось и выводилось побайтно, т.е. строго по порядку. Но в Java предоставляется также возможность обращаться к хранящимся в файле данным в произвольном порядке. Для этой цели предусмотрен класс RandomAccessFile, инкапсулирующий файл с произвольным доступом. Класс RandomAccessFile не является производным от класса InputStream или OutputStream. Вместо этого он реализует интерфейсы Datalnput и DataOutput, в которых объявлены основные методы ввода-вывода. В нем поддерживаются также запросы позиционирования, т.е. возможность задавать положение указателя файла произвольным образом. Ниже приведен конструктор класса RandomAccessFile, которым мы будем пользоваться далее.RandomAccessFile(String имя_файла, String доступ) throws FileNotFoundException
Здесь конкретный файл указывается с помощью параметра имя_файла, а параметр доступ определяет, какой именно тип доступа будет использоваться для обращения к файлу. Если параметр доступ принимает значение "г", то данные могут читаться из файла, но не записываться в него. Если же указан тип доступа "rw", то файл открывается как для чтения, так и для записи.

