Interace & abstract Java Advanced (not so). 2 Interface interface Instrument { int VALUE = 5; // public, static и final! void play(Note n); // public.

Презентация:



Advertisements
Похожие презентации
Ввод-вывод Java Advanced. 2Georgiy KorneevJava Advanced / Ввод-вывод Содержание 1.Потоки ввода-вывода 2.Файловый ввод-вывод и конвертация потоков 3.Фильтрующие.
Advertisements

Ввод-вывод Java Advanced. 2Georgiy KorneevJava Advanced / Ввод-вывод Содержание 1.Потоки ввода-вывода 2.Файловый ввод-вывод и конвертация потоков 3.Фильтрующие.
Java in pictures. Part 3.
Saint Petersburg, 2012 Java Lecture #04 Part I - IO.
1 Ввод–вывод в Java Обобщенное понятие источника ввода относится к различным способам получения информации: к чтению дискового файла, символов с клавиатуры,
Система ввода/вывода Потоки данных (stream) Сериализация объектов.
Язык программирования Java Андрей Дмитриев ©2009.
Лекция 11 Файлы. Точного определения файла не существует. Файлом может быть: Объект файловой системы (файлы, папки и т.д.) Устройство ввода/вывода (клавиатура,
Урок повторения по теме: «Сила». Задание 1 Задание 2.
Изучение динамического определения типов. Класс Class. Динамическая загрузка и инстанцирование классов. В Java вся информация о классе хранится в специальном.
Файловый тип данных Turbo Pascal Операции для работы с файлами 11 класс.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
1. Определить последовательность проезда перекрестка
Сериализация и RMI Java Advanced. 2Georgiy KorneevJava Advanced / Сериализация и RMI Содержание Сериализация Концепции RMI Применение RMI Заключение.
Файловая переменная. Файл – совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три характерные особенности: уникальное.
Обработка исключительных ситуаций, работа с файлами Исключительные ситуации Классы File, InputStream, RandomAccessFile, FileReader, BufferedReader, BufferedWriter,
Часть 1. Основы ООП Исключения.. Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую.
Множества значений или переменных с одним общим именем называются структурированными типами. По способу организации и типу компонентов выделяют: 1. Массивы.
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
Транксрипт:

Interace & abstract Java Advanced (not so)

2 Interface interface Instrument { int VALUE = 5; // public, static и final! void play(Note n); // public and abstract! void adjust(); // static methods are forbidden! } class Percussion implements Instrument { public void play(Note n) { … } public void adjust() { … } } Java Advanced / Interface & abstract

3 Abstract abstract class TestAbstract { public abstract void foo(); } abstract class TestAbstract2 { public void bar() { System.out.println("foo is not bar"); } class Test3 extends TestAbstract { public void foo() { // TODO Auto-generated method stub } Java Advanced / Ввод-вывод

Ввод-вывод Java Advanced (not so)

5Java Advanced / Ввод-вывод Содержание 1.Потоки ввода-вывода 2.Файловый ввод-вывод и конвертация потоков 3.Фильтрующие потоки 4.Дополнительные возможности потоков 5.Расширенный ввод-вывод 6.Дескрипторы файлов 7.Ввод-вывод и исключения 8.Форматированный ввод-вывод 9.Заключение

6Java Advanced / Ввод-вывод Ввод-вывод в Java Потоки ввода-вывода Пакет java.io

Потоки ввода-вывода Часть 1

8Java Advanced / Ввод-вывод Виды потоков Направление Ввод Вывод Содержимое Байтовые Символьные

9Java Advanced / Ввод-вывод Классы потоков БайтовыйСимвольный ВводInputStreamReader ВыводOutputStreamWriter

10Java Advanced / Ввод-вывод Исключительные ситуации Класс IOException Корень иерархии исключений ввода-вывода Бросается всеми операциями ввода/вывода Класс EOFException Достигнут конец потока Класс FileNotFoundException Файл не найден Класс UnsupportedEncodingException Неизвестная кодировка

11Java Advanced / Ввод-вывод Потоки ввода Основные операции int read() чтение элемента read(T[] v), read(T[] v, off, len) чтение элементов в массив Дополнительные операции skip(n) пропуск n элементов close() закрытие потока Пометки и возвраты mark(limit) пометка текущей позиции reset() возврат к помеченной позиции

12Java Advanced / Ввод-вывод Потоки вывода Основные операции write(int v) запись элемента write(T[] v) запись массива элементов write(T[] v, off, len) запись части массива Дополнительные операции flush() запись буфера close() закрытие потока

13Java Advanced / Ввод-вывод Пример: Блочное копирование Процедура копирования void copy(InputStream is, OutputStream os) throws IOException { byte[] b = new byte[1024]; int c = 0; while ((c = is.read(b)) >= 0) { os.write(b, 0, c); }

Файловый ввод-вывод и конвертация потоков Часть 2

15Java Advanced / Ввод-вывод Классы файлового ввода-вывода Классы File* FileInputStream FileOutputStream FileReader FileWriter

16Java Advanced / Ввод-вывод Создание файловых потоков Для символьных потоков используется кодировка по умолчанию Для ввода/вывода File*(File file) по дескриптору File*(String file) по имени Для дописывания File*(File file, boolean append) по дескриптору File*(String file, boolean append) по имени

17Java Advanced / Ввод-вывод Пример: преобразования регистра Файл input.txt копируется в output.txt с изменением регистра Reader reader = new FileReader("input.txt"); Writer writer = new FileWriter("output.txt"); int c = 0; while ((c = reader.read()) >= 0) { writer.write(Character.toUpperCase((char) c)); } reader.close(); writer.close();

18Java Advanced / Ввод-вывод Байтовый поток символьный При чтении возможно преобразование байтового потока в символьный, с указанием кодировки Класс InputStreamReader InputStreamReader(InputStream, encoding?)

19Java Advanced / Ввод-вывод Символьный поток байтовый При записи возможно преобразование символьного потока в байтовый, с указанием кодировки Класс OutputStreamWriter OutputStreamWriter(OutputStream, encoding?)

20Java Advanced / Ввод-вывод Пример: перекодирование файла Файл input.txt копируется в output.txt с изменением кодировки с Cp1251 на Cp866 Reader reader = new InputStreamReader( new FileInputStream("input.txt"), "Cp1251"); Writer writer = new OutputStreamWriter( new FileOutputStream("output.txt"), "Cp866"); int c = 0; while ((c = reader.read()) >= 0) writer.write(c); reader.close(); writer.close();

Фильтрующие потоки Часть 3

22Java Advanced / Ввод-вывод Фильтрующие потоки Направляют все вызовы вложенному потоку Классы Filter*

23Java Advanced / Ввод-вывод Буферизующие потоки Содержат буфер, который считывают / записывают целиком Классы Buffered*

24Java Advanced / Ввод-вывод Пример: шифрующий поток public class EncodingOutputStream extends FilterOutputStream { private final int key; public EncodingOutputStream(OutputStream os, int key) { super(os); this.key = key; } public void write(int b) throws IOException { super.write(b ^ key); }

Дополнительные возможности потоков Часть 4

26Java Advanced / Ввод-вывод Эмуляция чтения Чтение производится из буфера в памяти, передаваемого конструктору Классы ByteArrayInputStream – чтение из массива байт CharArrayReader – чтение из массива символов StringReader – чтение из строки

27Java Advanced / Ввод-вывод Эмуляция записи Запись производится в буфер в памяти, который доступен в любое время Классы ByteArrayOutputStream – запись в массив байт (toByteArray()) CharArrayWriter – запись в массив символов (toString(), toCharArray()) StringWriter – запись в StringBuffer (toString(), toStringBuffer())

28Java Advanced / Ввод-вывод Конкатенация потоков Несколько байтовых потоков можно конкатенировать Если первый из потоков закончился, производится чтение из второго и т.д. Класс SequenceInputStream SequenceInputStream(InputStream, InputStream) – конкатенация двух потоков SequenceInputStream(Enumeration) – конкатенация нескольких потоков

29Java Advanced / Ввод-вывод Вывод с подавлением ошибок Вывод осуществляется построчно, с подавлением ошибок Класс PrintWriter checkError() – проверить, была ли ошибка print(…) – запись без перевода строки println(…) – запись с переводом строки

30Java Advanced / Ввод-вывод Ввод с подсчетом строк Ввод осуществляется построчно, с подсчетом количества строк Класс LineNumberReader lineNumber() – текущий номер строки

Расширенный ввод- вывод Часть 5

32Java Advanced / Ввод-вывод Расширенная запись данных Платформонезависимая запись примитивных типов и строк Интерфейс DataOutput writeT(T) – запись примитивных типов writeUnsignedByte() / writeUnsignedShort() – запись беззнаковых целых writeUTF() – запись строки в кодировке UTF-8 Реализация DataOutputStream

33Java Advanced / Ввод-вывод Расширенное чтение данных Платформонезависимое чтение примитивных типов и строк Интерфейс DataInput T readT() – чтение примитивных типов readUnsignedByte() / readUnsignedShort() – чтение беззнаковых целых readUTF() – чтение строки в кодировке UTF-8 Реализация DataInputStream

34Java Advanced / Ввод-вывод Файлы c произвольным доступом Класс RandomAccessFile Реализует DataInput, DataOutput Конструктор RandomAccessFile(file, mode) – открыть файл в заданном режиме СтрокаРежим rЧтение wЗапись rwЧтение и запись rwsСинхронное чтение и запись

35Java Advanced / Ввод-вывод Дополнительные операции Методы length() – получить размер файла setLength() – установить размер файла getFilePointer() – получить положение указателя seek(long) – установить положения указателя

36Java Advanced / Ввод-вывод Класс System out – PrintStream для stdout err – PrintStream для stderr in – InputStream для stdin setOut(.) / setErr(.) / setIn(.) – установка консольных потоков console() – символьный доступ к консоли

37Java Advanced / Ввод-вывод Класс Console format/printf(format, args) – Форматированный вывод reader() – Reader для stdin writer() – Writer для stdout readLine() – чтение строки текста readPassword(format?, args?) – чтение пароля

Дескрипторы файлов Часть 6

39Java Advanced / Ввод-вывод Дескрипторы файлов Позволяют осуществлять манипуляции с файлами Класс File Создание дескриптора по имени File(pathname) – абсолютный или относительный путь В дескриптора по имени и директории File(File dir, name) File(String dir, name)

40Java Advanced / Ввод-вывод Операции с дескрипторами Получение информации getName() – получить имя getPath() – получить имя и путь getAbsolutePath() – получить абсолютный путь getAbsoluteFile() – получить абсолютный дескриптор Определение родителя String getParent() – как строки File getParentFile() – как дескриптора

41Java Advanced / Ввод-вывод Операции с файлами (1) Проверка типа isFile() – является ли файлом isDirectory() – является ли директорией isHidden() – является ли скрытым Получение информации о файла exist() – проверка существования length() – длина файла lastModified() – время последней модификации

42Java Advanced / Ввод-вывод Операции с файлами (2) Создание mkdir() – создать одну директорию mkdirs() – создать все директории createNewFile() – создать пустой файл Удаление delete() – удалить немедленно deleteOnExit() – удалить после завершения Переименование / перенос renameTo(file) – переименовать / перенести в заданное место

43Java Advanced / Ввод-вывод Листинг директории Листинг всех файлов String[] list() – получить имена файлов File[] listFiles() – получить дескрипторы файлов Листинг по критерию String[] list(FileNameFilter) – получить имена файлов File[] listFiles(FileFilter) – получить дескрипторы файлов

44Java Advanced / Ввод-вывод Проверка доступа к файлам canReadFile() – проверка возможности чтения canWriteFile() – проверка возможности записи canExecuteFile() – проверка возможности исполнения

Ввод-вывод и исключения Часть 7

46Java Advanced / Ввод-вывод Обычная обработка исключений Reader reader = new FileReader("input.txt"); try { // Операции с файлом } finally { reader.close(); }

47Java Advanced / Ввод-вывод Надежная обработка исключений Reader reader = new FileReader("input.txt"); try { // Операции с файлом reader.close(); } catch (IOException e) { try { reader.close(); } catch (IOException e) { /* Ignoring */ } throw e; }

48Java Advanced / Ввод-вывод Альтернативный метод Reader reader = null; try { reader = new FileReader("input.txt"); … } finally { if (reader != null) { reader.close(); }

49Java Advanced / Ввод-вывод Случай нескольких потоков Reader reader = new FileReader("input.txt"); try { Writer writer = new FileWriter("output.txt"); try { // Операции ввода-вывода... } finally { writer.close(); } } finally { reader.close(); }

50Java Advanced / Ввод-вывод Подавление исключений PrintWriter checkError() PrintStream checkErrors() Scanner ioException()

Заключение Часть 8

52Java Advanced / Ввод-вывод Ссылки I/O tutorial // ial/io/index.html ial/io/index.html I/O in Java 2 Platform //

53Java Advanced / Ввод-вывод Вопросы