Язык программирования Java Андрей Дмитриев andrei-dmitriev@yandex.ru ©2009.

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



Advertisements
Похожие презентации
Saint Petersburg, 2012 Java Lecture #04 Part I - IO.
Advertisements

Java in pictures. Part 3.
Ввод-вывод Java Advanced. 2Georgiy KorneevJava Advanced / Ввод-вывод Содержание 1.Потоки ввода-вывода 2.Файловый ввод-вывод и конвертация потоков 3.Фильтрующие.
Ввод-вывод Java Advanced. 2Georgiy KorneevJava Advanced / Ввод-вывод Содержание 1.Потоки ввода-вывода 2.Файловый ввод-вывод и конвертация потоков 3.Фильтрующие.
Interace & abstract Java Advanced (not so). 2 Interface interface Instrument { int VALUE = 5; // public, static и final! void play(Note n); // public.
1 Ввод–вывод в Java Обобщенное понятие источника ввода относится к различным способам получения информации: к чтению дискового файла, символов с клавиатуры,
Система ввода/вывода Потоки данных (stream) Сериализация объектов.
1 Java 9. ПОТОКИ ВВОДА/ВЫВОДА. 2 Класс File Класс File может представлять как имя определенного файла, так, имена группы файлов, находящихся в каталоге.
Язык программирования Java Дмитриев Андрей Владиславович 2007.
Часть 1. Основы ООП Наследование и полиморфизм.
Язык программирования Java Андрей Дмитриев ©2009.
Тема 6 Потоки введення- виведення. Робота з файлами.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Обработка исключительных ситуаций, работа с файлами Исключительные ситуации Классы File, InputStream, RandomAccessFile, FileReader, BufferedReader, BufferedWriter,
Язык программирования Java Дмитриев Андрей Владиславович Май 2007.
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Стандартная библиотека Java: java.util, java.io, java.net.
Пакет java.io. Байтовые потоки ввода-вывода При создании приложений всегда возникает необходимость прочитать информацию из какого-либо источника и/или.
Click to edit Master title style IDK1011 Основы программирования Диалоговые окна Чтение файлов и директорий.
Часть 1. Основы ООП Исключения.. Структурный подход Неисправимые ошибки – вывести информацию и умереть. Исправимые ошибки – уведомить вызывающую.
Платформа J2EE Сервис: Java Naming Directory (JNDI) – универсальный сервис хранения объектов в иерархической структуре имен (аналогично файловой системе)
Транксрипт:

Язык программирования Java Андрей Дмитриев ©2009

Часть 10. Система ввода-вывода Введение Обзор пакетов и классов JDK

Содержимое каталога import java.io.*; File aFile = new File("d:" + File.separator + "work"); for (int i = 0; i < aFile.list().length; i++){ println(">>"+aFile.list()[i]); }

java.io.File API(1) boolean canExecute(), boolean canRead(), boolean canWrite() – файловые атрибуты boolean exists() – проверка существования файла String getParent(), File getParentFile() – родительский каталог boolean isFile(), boolean isDirectory() – тип файла

java.io.File API(2) createNewFile() – создание файла mkdir() – создание директории delete() – удаление файла String [] list(), File [] listFiles() – содержимое каталога

Файловые фильтры class DirFilter implements FilenameFilter{ String entry; DirFilter(String entry) { this. entry = entry; } public boolean accept(File dir, String name) { String f = new File(name).getName(); return f.indexOf(entry) != -1; }

Использование фильтра String[] list = aFile.list( new DirFilter(java));

Копирование файла File inFile = new File("infile.dat"); File outFile = new File("outfile.dat"); FileInputStream inStream = new FileInputStream(inFile); FileOutputStream outStream = new FileOutputStream(outFile); int c; while ((c = inStream.read()) != -1) { outStream.write(c); }

InputStream API int available() – количество доступных байтов int read(byte []) – чтение серии байтов в массив void close() – закрытие потока skip(long bytes)

Наследники InputStream(1) FileInputStream(File) – файловый поток данных BufferedInputStream(InputStream) – буферизованный поток данных ByteArrayInputStream(byte []) – байтовый поток данных PipedInputStream(PipedOutputStream) – ассоциирован с входным потоком. Обычно применяется для меж потокового обмена данными ObjectInputStream(InputStream) – чтение стерилизованного объекта

Наследники InputStream(2) FilterInputStream(InputStream) – применяется для изменения данных на лету DataInputStream(InputStream) – работа с примитивными типами данных. Имеет методы: readByte(), readBoolean(), readInt() и т.д. PushbackInputStream(InputStream) – позволяет «вернуть» прочитанные данные обратно в поток StringBufferInputStream(String) - deprecated

OutputStream API write(byte b[]) – запись массива данных в поток flush() – запись всех хранящихся данных методом освобождения внутреннего буфера close() – закрытие потока

Наследники OutputStream(1) FileOutputStream(File) - файловый поток данных FilterOutputStream() - применяется для изменения данных на лету ByteArrayOutputStream(byte []) - байтовый поток данных PipedOutputStream(PipedOutputStream) - – ассоциирован с входным потоком. Обычно применяется для меж потокового обмена данными

Наследники OutputStream(2) DataOuputStream(OutputStream) – работа с примитивными типами данных. Имеет методы: readByte(), readBoolean(), readInt() и т.д. BufferedOutputStream(OutputStream) – буферизованный поток данных PrintStream(OutputStream) – ориентирован на работу с символами, а не с байтами

Reader/Writer Расширение иерархии Мост между байтовыми и символьными потоками Интернационализация

Аналогичные иерархии потоков InputStream OutputStream FileInputStream FileOutputStream PipedInputStream PipedOutputStream Reader Writer FileReader FileWriter PipedReader PipedWriter

RandomAccessFile Предоставляет возможность записи и чтения из определенных частей файла. Подобен массиву во внешнем хранилище. getFilePointer() – текущее положение указателя в файле seek(long pos) – изменение положения указателя length() – доступная длина файла read(byte b[]) – чтение серии байтов write(byte b[]) –запись серии байтов readInt(), readBoolean() и т.д. – чтение значения соответствующего типа writeInt(), writeBoolean() и т.д. – запись значения соответствующего типа

RandomAccessFile(запись) RandomAccessFile rf = new RandomAccessFile("rtest.dat", "rw"); for(int i = 0; i < 10; i++) rf.writeDouble(i*1.414); rf.close(); rf = new RandomAccessFile("rtest.dat", "rw"); rf.seek(5*8); rf.writeDouble( ); rf.close();

RandomAccessFile(чтение) RandomAccessFile rf = new RandomAccessFile("rtest.dat", "r"); for(int i = 0; i < 10; i++){ System.out.println(+rf.readDouble()); } rf.close();

Перенаправление потока PrintWriter out = new PrintWriter(System.out, true); out.println("Hello world"); System.out – класс OutputStream. Эта сущность может быть изменена динамически

Перенаправление потока вывода - копирование файла(1) BufferedInputStream in = new BufferedInputStream( new FileInputStream(test.in)); PrintStream out = new PrintStream( new BufferedOutputStream( new FileOutputStream("test.out"))); //шаблон Декоратор

Перенаправление потока вывода - копирование файла(2) System.setOut(out); System.setErr(out); System.setIn(in); // ассоциируем стандартные потоки с открытыми пользовательскими файлами BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String s; while((s = br.readLine()) != null) System.out.println(s); out.close();

Компрессия ZipInputStream – поток, распаковывающий данные в формате Zip ZipOutputStream - поток, сжимающий данные в формат Zip GZipInputStream - поток, распаковывающий данные в формате GZIP GZipOutputStream - поток, сжимающий данные в формат GZIP

Правда ли что… InputStream.skip(long n) гарантированно пропускает n байт Классы InputStream и FilterInputStream организованы в паттерн Декоратор