Ввод-вывод. Java Advanced Java Advanced / Ввод-вывод

  • Размер: 268 Кб
  • Количество слайдов: 49

Описание презентации Ввод-вывод. Java Advanced Java Advanced / Ввод-вывод по слайдам

 Ввод-вывод. Java Advanced Ввод-вывод. Java Advanced

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

Java Advanced / Ввод-вывод 3 G. Korneev / А. Breslav Ввод-вывод в Java Потоки ввода-вывода ПакетJava Advanced / Ввод-вывод 3 G. Korneev / А. Breslav Ввод-вывод в Java Потоки ввода-вывода Пакет java. io

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

Java Advanced / Ввод-вывод 5 G. Korneev / А. Breslav Виды потоков Направление Ввод Вывод СодержимоеJava Advanced / Ввод-вывод 5 G. Korneev / А. Breslav Виды потоков Направление Ввод Вывод Содержимое Байтовые Символьные

Java Advanced / Ввод-вывод 6 G. Korneev / А. Breslav Классы потоков Байтовый Символьный Ввод Input.Java Advanced / Ввод-вывод 6 G. Korneev / А. Breslav Классы потоков Байтовый Символьный Ввод Input. Stream Reader Вывод Output. Stream Writer

Java Advanced / Ввод-вывод 7 G. Korneev / А. Breslav Исключительные ситуации Класс IOException Корень иерархииJava Advanced / Ввод-вывод 7 G. Korneev / А. Breslav Исключительные ситуации Класс IOException Корень иерархии исключений ввода-вывода Бросается всеми операциями ввода/вывода Класс EOFException Достигнут конец потока Класс File. Not. Found. Exception Файл не найден Класс Unsupported. Encoding. Exception Неизвестная кодировка

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

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

Java Advanced / Ввод-вывод 10 G. Korneev / А. Breslav Пример :  ?  ?Java Advanced / Ввод-вывод 10 G. Korneev / А. Breslav Пример : ? ? void copy(Input. Stream is, Output. Stream os) throws IOException { byte[] b = new byte[1024]; int c = 0; while ((c = is. read(b)) >= 0) { os. write(b, 0, c); } }

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

Java Advanced / Ввод-вывод 12 G. Korneev / А. Breslav Классы файлового ввода-вывода Классы File* File.Java Advanced / Ввод-вывод 12 G. Korneev / А. Breslav Классы файлового ввода-вывода Классы File* File. Input. Stream File. Output. Stream File. Reader File. Writer

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

Java Advanced / Ввод-вывод 14 G. Korneev / А. Breslav Пример :  ?  ?Java Advanced / Ввод-вывод 14 G. Korneev / А. Breslav Пример : ? ? Reader reader = new File. Reader(» input. txt «); Writer writer = new File. Writer(» output. txt «); int c = 0; while ((c = reader. read()) >= 0) { writer. write(Character. to. Upper. Case((char) c)); } reader. close(); writer. close();

Java Advanced / Ввод-вывод 15 G. Korneev / А. Breslav Байтовый поток  символьный  ПриJava Advanced / Ввод-вывод 15 G. Korneev / А. Breslav Байтовый поток символьный При чтении возможно преобразование байтового потока в символьный, с указанием кодировки Класс Input. Stream. Reader(Input. Stream, encoding? )

Java Advanced / Ввод-вывод 16 G. Korneev / А. Breslav Символьный поток  байтовый При записиJava Advanced / Ввод-вывод 16 G. Korneev / А. Breslav Символьный поток байтовый При записи возможно преобразование символьного потока в байтовый, с указанием кодировки Класс Output. Stream. Writer(Output. Stream, encoding? )

Java Advanced / Ввод-вывод 17 G. Korneev / А. Breslav Пример :  ?  ?Java Advanced / Ввод-вывод 17 G. Korneev / А. Breslav Пример : ? ? Reader reader = new Input. Stream. Reader( new File. Input. Stream(» input. txt «), » Cp 1251 «); Writer writer = new Output. Stream. Writer( new File. Output. Stream(» output. txt «), » Cp 866 «); int c = 0; while ((c = reader. read()) >= 0) { writer. write(c); } reader. close(); writer. close();

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

Java Advanced / Ввод-вывод 19 G. Korneev / А. Breslav Эмуляция чтения Чтение производится из буфераJava Advanced / Ввод-вывод 19 G. Korneev / А. Breslav Эмуляция чтения Чтение производится из буфера в памяти, передаваемого конструктору Классы Byte. Array. Input. Stream – чтение из массива байт Char. Array. Reader – чтение из массива символов String. Reader – чтение из строки

Java Advanced / Ввод-вывод 20 G. Korneev / А. Breslav Эмуляция записи Запись производится в буферJava Advanced / Ввод-вывод 20 G. Korneev / А. Breslav Эмуляция записи Запись производится в буфер в памяти, который доступен в любое время Классы Byte. Array. Output. Stream – запись в массив байт ( to. Byte. Array() ) Char. Array. Writer – запись в массив символов ( to. String() , to. Char. Array() ) String. Writer – запись в String. Buffer ( to. String() , to. String. Buffer() )

Java Advanced / Ввод-вывод 21 G. Korneev / А. Breslav Конкатенация потоков Несколько байтовых потоков можноJava Advanced / Ввод-вывод 21 G. Korneev / А. Breslav Конкатенация потоков Несколько байтовых потоков можно конкатенировать Если первый из потоков закончился, производится чтение из второго и т. д. Класс Sequence. Input. Stream( Input. Stream, Input. Stream) – конкатенация двух потоков Sequence. Input. Stream( Enumeration) – конкатенация нескольких потоков

Java Advanced / Ввод-вывод 22 G. Korneev / А. Breslav Вывод с подавлением ошибок Вывод осуществляетсяJava Advanced / Ввод-вывод 22 G. Korneev / А. Breslav Вывод с подавлением ошибок Вывод осуществляется построчно, с подавлением ошибок Класс Print. Stream, Print. Writer check. Error() – проверить, была ли ошибка print(…) – запись без перевода строки println(…) – запись с переводом строки System. out – это Print. Stream

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

Java Advanced / Ввод-вывод 24 G. Korneev / А. Breslav Расширенная запись данных Платформонезависимая запись примитивныхJava Advanced / Ввод-вывод 24 G. Korneev / А. Breslav Расширенная запись данных Платформонезависимая запись примитивных типов и строк Интерфейс Data. Output write. T(T) – запись примитивных типов write. UTF() – запись строки в кодировке UTF-8 Кодировка модифицирована! Реализация Data. Output. Stream

Java Advanced / Ввод-вывод 25 G. Korneev / А. Breslav Расширенное чтение данных Платформонезависимое чтение примитивныхJava Advanced / Ввод-вывод 25 G. Korneev / А. Breslav Расширенное чтение данных Платформонезависимое чтение примитивных типов и строк Интерфейс Data. Input T read. T() – чтение примитивных типов read. Unsigned. Byte() / read. Unsigned. Short() – чтение беззнаковых целых read. UTF() – чтение строки в кодировке UTF-8 Реализация Data. Input. Stream

Java Advanced / Ввод-вывод 26 G. Korneev / А. Breslav Файлы c произвольным доступом Класс Random.Java Advanced / Ввод-вывод 26 G. Korneev / А. Breslav Файлы c произвольным доступом Класс Random. Access. File Реализует Data. Input , Data. Output Конструктор Random. Access. File(file, mode) – открыть файл в заданном режиме Строка Режим r Чтение w Запись rw Чтение и запись rws Синхронное чтение и запись

Java Advanced / Ввод-вывод 27 G. Korneev / А. Breslav Дополнительные операции  Методы length() –Java Advanced / Ввод-вывод 27 G. Korneev / А. Breslav Дополнительные операции Методы length() – получить размер файла set. Length() – установить размер файла get. File. Pointer() – получить положение указателя seek(long) – установить положения указателя

 Текстовый ввод. Часть 5 Текстовый ввод. Часть

Java Advanced / Ввод-вывод 29 G. Korneev / А. Breslav Scanner  позволяет читать значения примитивныхJava Advanced / Ввод-вывод 29 G. Korneev / А. Breslav Scanner позволяет читать значения примитивных типов и строки из текстовых источников Входные данные – интерпретируются как текст Readable Input. Stream [charset] File [charset] String

Java Advanced / Ввод-вывод 30 G. Korneev / А. Breslav Scanner – разделители Входные данные текст:Java Advanced / Ввод-вывод 30 G. Korneev / А. Breslav Scanner – разделители Входные данные текст: « 123 abc -22 » – число, пробел , строка, пробел , число Текстовые данные разделяются с помощью разделителя (delimiter) delimiter() use. Delimiter() по умолчанию – « whitespace » пробелы табуляции переводы строк

Java Advanced / Ввод-вывод 31 G. Korneev / А. Breslav Scanner – чтение строк Методы чтенияJava Advanced / Ввод-вывод 31 G. Korneev / А. Breslav Scanner – чтение строк Методы чтения строк next() – следующая строка, отделенная разделителем has. Next() No. Such. Element. Exception Реализует Iterator next. Line() – считать символы до конца строки has. Next. Line()

Java Advanced / Ввод-вывод 32 G. Korneev / А. Breslav Scanner – чтение  примитивов TJava Advanced / Ввод-вывод 32 G. Korneev / А. Breslav Scanner – чтение примитивов T next. T() – чтение значений примитивного типа сначала считывается текст до разделителя затем этот текст преобразуется в значение примитивного типа Input. Mismatch. Exception next. T(int radix) – чтение данных в системе счисления с заданным основанием next. Byte(), next. Short(), next. Int(), next. Long(), next. Big. Integer()

Java Advanced / Ввод-вывод 33 G. Korneev / А. Breslav Scanner – ? Scanner scanner =Java Advanced / Ввод-вывод 33 G. Korneev / А. Breslav Scanner – ? Scanner scanner = new Scanner(«123 a -5\n abc 12 a 546 df»); while (scanner. has. Next()) { if (!scanner. has. Next. Int()) { scanner. next(); } else { System. out. println(scanner. next. Int()); } }

Java Advanced / Ввод-вывод 34 G. Korneev / А. Breslav Scanner – другие методы Кодировки locale()Java Advanced / Ввод-вывод 34 G. Korneev / А. Breslav Scanner – другие методы Кодировки locale() use. Locale() Система счисления radix() use. Radix() Исключения IOException подавляется io. Exception() – последнее исключение ввода-вывода, null , если исключения не было

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

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

Java Advanced / Ввод-вывод 37 G. Korneev / А. Breslav Разделители separator / separtor. Char Java Advanced / Ввод-вывод 37 G. Korneev / А. Breslav Разделители separator / separtor. Char – платформозависимый разделитель директорий path. Separator / path. Separator. Char – платформозависимый разделитель в файлов и директорий в путях

Java Advanced / Ввод-вывод 38 G. Korneev / А. Breslav Операции с дескрипторами Получение информации get.Java Advanced / Ввод-вывод 38 G. Korneev / А. Breslav Операции с дескрипторами Получение информации get. Name() – имя get. Path() – путь get. Absolute. Path() – абсолютный путь get. Absolute. File() – абсолютный дескриптор get. Canonical. Path() – канонический путь get. Canonical. File() – канонический дескриптор Определение родителя String get. Parent() – как строки File get. Parent. File() – как дескриптора

Java Advanced / Ввод-вывод 39 G. Korneev / А. Breslav Операции с файлами (1) Проверка типаJava Advanced / Ввод-вывод 39 G. Korneev / А. Breslav Операции с файлами (1) Проверка типа is. File() – является ли файлом is. Directory() – является ли директорией is. Hidden() – является ли скрытым Получение информации о файле exist() – проверка существования length() – длина файла last. Modified() – время последней модификации

Java Advanced / Ввод-вывод 40 G. Korneev / А. Breslav Операции с файлами (2) Создание mkdir()Java Advanced / Ввод-вывод 40 G. Korneev / А. Breslav Операции с файлами (2) Создание mkdir() – создать одну директорию mkdirs() – создать все директории create. New. File() – создать пустой файл Удаление delete() – удалить немедленно delete. On. Exit() – удалить после завершения Переименование / перенос rename. To(file) – переименовать / перенести в заданное место

Java Advanced / Ввод-вывод 41 G. Korneev / А. Breslav Листинг директории Листинг всех файлов String[]Java Advanced / Ввод-вывод 41 G. Korneev / А. Breslav Листинг директории Листинг всех файлов String[] list() – получить имена файлов File[] list. Files() – получить дескрипторы файлов Листинг по критерию String[] list(File. Name. Filter) – получить имена файлов File[] list. Files(File. Filter) – получить дескрипторы файлов

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

Java Advanced / Ввод-вывод 43 G. Korneev / А. Breslav Обычная обработка исключений Reader reader =Java Advanced / Ввод-вывод 43 G. Korneev / А. Breslav Обычная обработка исключений Reader reader = new File. Reader(«input. txt»); try { // Операции с файлом } finally { if (reader != null) { reader. close(); } }

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

Java Advanced / Ввод-вывод 45 G. Korneev / А. Breslav Альтернативный метод Reader reader = null;Java Advanced / Ввод-вывод 45 G. Korneev / А. Breslav Альтернативный метод Reader reader = null; try { reader = new File. Reader(«input. txt»); … } finally { if (reader != null) { reader. close(); } }

Java Advanced / Ввод-вывод 46 G. Korneev / А. Breslav Случай нескольких потоков Reader reader =Java Advanced / Ввод-вывод 46 G. Korneev / А. Breslav Случай нескольких потоков Reader reader = new File. Reader(«input. txt»); try { Writer writer = new File. Writer(«output. txt»); try { // Операции ввода-вывода . . . } finally { writer. close(); } } finally { reader. close(); }

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

Java Advanced / Ввод-вывод 48 G. Korneev / А. Breslav Ссылки I/O tutorial // http: //java.Java Advanced / Ввод-вывод 48 G. Korneev / А. Breslav Ссылки I/O tutorial // http: //java. sun. com/docs/books/tutorial/essent ial/io/index. html I/O in Java 2 Platform // http: // java. sun. com /j 2 se/1. 5. 0/ docs / guide / io /

Java Advanced / Ввод-вывод 49 G. Korneev / А. Breslav Вопросы Java Advanced / Ввод-вывод 49 G. Korneev / А. Breslav Вопросы