Ревью 5. Что такое потоки вводавывода Как это реализовано в Java 3 Классынадстройки потоков вводавывода 4
Скачать 110.73 Kb.
|
Какие классы поддерживают чтение и запись потоков в компрессированном формате?DeflaterOutputStream - компрессия данных в формате deflate. Deflater - компрессия данных в формат ZLIB ZipOutputStream - потомок DeflaterOutputStream для компрессии данных в формат Zip. GZIPOutputStream - потомок DeflaterOutputStream для компрессии данных в формат GZIP. InflaterInputStream - декомпрессия данных в формате deflate. Inflater - декомпрессия данных в формате ZLIB ZipInputStream - потомок InflaterInputStream для декомпрессии данных в формате Zip. GZIPInputStream - потомок InflaterInputStream для декомпрессии данных в формате GZIP. Какой символ является разделителем при указании пути в файловой системе?Для различных операционных систем символ разделителя различается. Для Windows это \, для Linux - /. В Java получить разделитель для текущей операционной системы можно через обращение к статическому полю File.separator. Что такое «символьная ссылка»?Символьная (символическая) ссылка (также «симлинк», Symbolic link) — специальный файл в файловой системе, в котором, вместо пользовательских данных, содержится путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Целью ссылки может быть любой объект: например, другая ссылка, файл, каталог или даже несуществующий файл (в последнем случае, при попытке открыть его, должно выдаваться сообщение об отсутствии файла). Символьные ссылки используются для более удобной организации структуры файлов на компьютере, так как: позволяют для одного файла или каталога иметь несколько имён и различных атрибутов; свободны от некоторых ограничений, присущих жёстким ссылкам (последние действуют только в пределах одной файловой системы (одного раздела) и не могут ссылаться на каталоги). Классы байтовых потоковКласс байтового потока Описание BufferedlnputStream Буферизованный поток ввода BufferedOutputStream Буферизованный поток вывода ByteArrayInputStream Поток ввода для чтения из байтового массива ByteArrayOutputStream Поток вывода для записи в байтовый массив DatalnputStream Поток ввода с методами для чтения стандартных типов данных Java DataOutputStream Поток вывода с методами для записи стандартных типов данных Java FileInputStream Поток ввода для чтения из файла FileOutputStream Поток вывода для записи в файл FilterlnputStream Подкласс, производный от класса InputStream FilterOutputStream Подкласс, производный от класса OutputStream InputStream Абстрактный класс, описывающий потоковый ввод ObjectInputStream Поток для ввода объектов ObjectOutputStream Поток для вывода объектов OutputStream Абстрактный класс, описывающий потоковый вывод PipedlnputStream Поток конвейерного ввода PipedOutputStream Поток конвейерного вывода PrintStream Поток вывода с методами print() и println() PushbacklnputStream Поток ввода с возвратом прочитанных байтов в поток RandomAccessFile Класс, поддерживающий файловый ввод-вывод с произвольным доступом SequenceInputStream Поток ввода, сочетающий в себе несколько потоков ввода для поочередного чтения данных из них Классы символьных потоковКласс символьного потока Описание BufferedReader Буферизованный поток ввода символов BufferedWriter Буферизованный поток вывода символов CharArrayReader Поток ввода для чтения из символьного массива CharArrayWriter Поток вывода для записи в символьный массив FileReader Поток ввода для чтения символов из файла FileWriter Поток вывода для записи символов в файл FilterReader Класс для чтения символов с фильтрацией FilterWriter Класс для записи символов с фильтрацией InputStreamReader Поток ввода с преобразованием байтов в символы LineNumberReader Поток ввода с подсчетом символьных строк OutputStreamWriter Поток вывода с преобразованием символов в байты PipedReader Поток конвейерного ввода PipedWriter Поток конвейерного вывода PrintWriter Поток вывода с методами print() и println() PushbackReader Поток ввода с возвратом прочитанных символов в поток Reader Абстрактный класс, описывающий потоковый ввод символов StringReader Поток ввода для чтения из символьной строки StringWriter Поток вывода для записи в символьную строку Writer Абстрактный класс, описывающий потоковый вывод символов Методы, определенные в классе InputStreamМетод Описание int available() Возвращает количество байтов, доступных для чтения void close() Закрывает поток ввода. При последующей попытке чтения из потока генерируется исключение IOException void mark(int numBytes) Ставит отметку на текущей позиции в потоке. Отметка доступна до тех пор, пока на будет прочитано количество байтов, определяемое параметром numBytes boolean markSupported() Возвращает логическое значение true, если методы mark() и reset() поддерживаются в вызывающем потоке int read() Возвращает целочисленное представление следующего байта в потоке. Если достигнут конец потока, возвращается значение -1 int read(byte buffer[]) Предпринимает попытку прочитать количество байтов, определяемое выражением buffer, length, в массив buffer и возвращает фактическое количество успешно прочитанных байтов. Если достигнут конец потока, возвращается значение -1 int read(byte buffer[], int offset, int numBytes) Предпринимает попытку прочитать количество байтов, определяемое параметром numBytes, в массив buffer, начиная с элемента buffer[offset]. Если достигнут конец потока, возвращается значение -1 void reset() Устанавливает указатель ввода на помеченной ранее позиции long skip (long numBytes) Пропускает количество байтов, определяемое параметром numBytes, в потоке ввода. Возвращает фактическое количество пропущенных байтов Методы, определенные в классе OutputStreamМетод Описание void close() Закрывает выходной поток. При последующей попытке записи в поток генерируется исключение IOExceptionВыводит содержимое выходного буфера вывода в void flush() Выводит содержимое выходного буфера вывода в целевой поток. По завершении этой операции выходной буфер очищается void write(int b) Записывает один байт в поток вывода. Параметр b относится к типу int, что позволяет вызывать данный метод в выражениях, не приводя результат их вычисления к типу byte void write(byte buffer[]) Записывает массив в поток вывода void write(byte buffer[], int offset, int numBytes) Записывает в поток вывода часть массива buffer длиной numBytes байтов, начиная с элемента buffer[offset] Наиболее часто употребляемые методы вывода данных, определенные в классе DataOutputStreamМетод вывода данных Описание void writeBoolean (boolean val) Записывает логическое значение, определяемое параметром val void writeByte (int,val) Записывает младший байт целочисленного значения, определяемого параметром val void writeChar (int,val) Записывает значение, определяемое параметром val, интерпретируя его как символ void writeDouble (double val) Записывает значение типа double, определяемое параметром val void writeFloat (float val) Записывает значение типа float, определяемое параметром val void writelnt(int val) Записывает значение типа int, определяемое параметром val void writeLong (long val) Записывает значение типа long, определяемое параметром val void writeShort (int val) Записывает целочисленное значение, определяемое параметром val, преобразуя его в тип short Наиболее часто употребляемые методы ввода данных, определенные в классе DatalnputStreamМетод ввода данных Описание boolean readBoolean() Читает значение типа boolean byte readByte() Читает значение типа byte char readChar() Читает значение типа char double readDouble() Читает значение типа double float readFloat() Читает значение типа float int readlnt() Читает значение типа int long readLong() Читает значение типа long short readShort() Читает значение типа short Методы, определенные в классе ReaderМетод Описание abstract void close() Закрывает поток ввода данных. При последующей попытке чтения генерируется исключение IOException void mark (int numChars) Ставит отметку на текущей позиции в потоке. Отметка доступна до тех пор, пока на будет прочитано количество символов, определяемое параметром numChars boolean markSupported() Возвращает логическое значение true, если поток поддерживает методы mark() и reset() int read() Возвращает целочисленное представление очередного символа из потока ввода. Если достигнут конец потока, возвращается значение -1 int read(char buffer[]) Предпринимает попытку прочитать количество байтов, определяемое выражением buffer, length, в массив buffer и возвращает фактическое количество успешно прочитанных символов. Если достигнут конец потока, возвращается значение -1 abstract int read(char buffer[], int offset, int numChars) Предпринимает попытку прочитать количество символов, определяемое параметром numChars, в массив buffer, начиная с элемента buffer [ offset]. Если достигнут конец потока, возвращается значение -1 int read(CharBuffer buffer) Предпринимает попытку заполнить буфер, определяемый параметром buffer, символами, прочитанными из входного потока. Если достигнут конец потока, возвращается значение -1. CharBuffer — это класс, представляющий последовательность символов, например строку boolean ready() Возвращает логическое значение true, если следующий запрос на получение символа может быть выполнен немедленно. В противном случае возвращается логическое значение false void reset() Устанавливает указатель ввода на помеченной ранее позиции long skip(long numChars) Пропускает количество символов, определяемое параметром numChars, в потоке ввода. Возвращает фактическое количество пропущенных символов Методы, определенные в классе Writerния последовательности символов Writer append(CharSequence chars, int begin, int end) Записывает символы chars в конец текущего потока, начинаяс позиции, определяемой параметром begin, и кончая позицией, определяемой параметром end. Возвращает ссылку на поток. CharSequence — это интерфейс, в котором описаны только операции чтения последовательности символов abstract void close() Закрывает поток вывода. При последующей попытке записи в поток генерируется исключение IOException abstract void flush() Выводит текущее содержимое буфера на устройство. В результате выполнения данной операции буфер очищается void write(int ch) Записывает в вызывающий поток вывода один символ. Параметр ch относится к типу int, что позволяет вызывать данный метод в выражениях, не приводя результат их вычисления к типу char void write(char buffer[]) Записывает в вызывающий поток вывода массив символов buffer abstract void write(char buffer[], int offset, int numChars) Записывает в вызывающий поток вывода количество символов, определяемое параметром numChars, из массива buffer, начиная с элемента buffer[ offset ] void write(String str) Записывает в вызывающий поток вывода символьную строку str void write(String str, int offset, int numChars) Записывает в вызывающий поток вывода часть numChars символов из строки str, начиная с позиции, обозначаемой параметром offset Применение оболочек типов для преобразования символьных строк в числаОболочки типов в Java представляют собой классы, которые инкапсулируют простые типы. Оболочки типов необходимы, поскольку простые типы не являются объектами, что ограничивает их применение. Так, простой тип нельзя передать методу по ссылке. Для того чтобы исключить ненужные ограничения, в Java были предусмотрены классы, соответствующие каждому из простых типов. Оболочками типов являются классы Double, Float, Long, Integer, Short, Byte, Character и Boolean. Эти классы предоставляют обширный ряд методов, позволяющих полностью интегрировать простые типы в иерархию объектов Java. Кроме того, в классах-оболочках числовых типов содержатся методы, предназначенные для преобразования числовых строк в соответствующие двоичные эквиваленты. Эти методы приведены ниже. Каждый из них возвращает двоичное значение, соответствующее числовой строке. Оболочка типа Метод преобразования Double static double parseDouble(String str) throws NumberFormatException Float static float parseFloat(String str) throws NumberFormatException Long static long parseLong(String str) throws NumberFormatException Integer static int parselnt(String str) throws NumberFormatException Short static short parseShort(String str) throws NumberFormatException Byte static byte parseByte(String str) throws NumberFormatException Оболочки целочисленных типов также предоставляют дополнительный метод синтаксического анализа, позволяющий задавать основание системы счисления. На каком паттерне основана иерархия потоков ввода/вывода?Объекты классов Java, которые используются для ввода/вывода, для обеспечения необходимой функциональности наслаиваются друг на друга. Такая модель взаимодействия объектов поддерживается в паттерне «Декоратор». В этом паттерне при создании потока нужно использовать несколько объектов. Что такое декоратор? Пример в IOДекоратор — это структурный паттерн, который позволяет добавлять объектам новые поведения на лету, помещая их в объекты-обёртки. inputstream, bytearrayinputstream, stringbuilderinputstreams и так далее являются основанными элементами. Filterinputstream - это базовый класс для классов декораторов. Фильтр входных потоков (например, bufferedinput stream) может выполнять дополнительные функции при чтении потоков или записи в них. Что такое паттерн адаптер?Адаптер (Adapter) – это структурный паттерн, который позволяет адаптировать интерфейс класса в соответствии с требованиями системы. То есть, адаптер — это своеобразная прослойка между классами, приводящая интерфейс одного класса к используемому в другом. OutputStreamWriter мы легко «адаптирует» два интерфейса классов Writer и OutputStream друг другу. Класс InputStreamReader — это классический адаптер, он адаптирует InputStream и Reader (I/O) Что такое сокет? Чем он определяется?1) Сокет (socket — разъём) - программный интерфейс для обмена данными между процессами. 2) Процессы могут исполняться как на одном компьютере, так на разных, связанных сетью. 3) Иначе говоря, сокет - объект, представляющий конечную точку соединения. 4) Сокет определяется IP-адресом компьютера и номером порта. Для протокола TCP номер порта - целое число от 0 до 65535. (I/O, Сокеты) На какие три диапазона делятся номера портов?1) Общеизвестные (системные): 0—1023 /1024=2¹⁰/ 2) Зарегистрированные (пользовательские): 1024—49151 /49152=2¹⁶-2¹⁴/ 3) Динамические (частные): 49152—65535 /65536=2¹⁶/ Как расшифровывается POSIX? Что это такое? Зачем?1) Portable Operating System Interface for uniX 2) POSIX - это набор стандартов, описывающих API операционной системы, а также набор классов/приложений, реализующих эти API. 3) POSIX создан для совместимости различных UNIX-based систем и переносимости между ними программ. Как управлять атрибутами файла? |