рандомные вопросы Flashcards
В каких пакетах лежат классы-потоки
Классы потоков ввода\вывода лежат в java.io;
С JDK 7 добавлен более современный способ работы с потоками — Java NIO. Классы лежат в java.nio
Какие классы позволяют преобразовать байтовые потоки в символьные и обратно
OutputStreamWriter
InputStreamReader
Какие существуют виды потоков ввода и вывода
Байтовые и символьные
Байтовые
- InputStream
- OutputStream
Символьные
- Reader
- Writer
Какой класс-надстройка позволяет ускорить чтение запись за счет использования буфера
java.io.BufferedInputStream(InputStream in) ||BufferedInputStream(InputStream in, int size),
java.io.BufferedOutputStream(OutputStream out) ||BufferedOutputStream(OutputStream out, int size),
java.io.BufferedReader(Reader r) ||BufferedReader(Reader in, int sz),
java.io.BufferedWriter(Writer out) ||BufferedWriter(Writer out, int sz)
Какой класс-надстройка позволяет читать данные из входного байтового потока в формате примитивных типов данных
DataInputStream
Основные предки потоков ввода вывода
Байтовые: java.io.InputStream, java.io.OutputStream;
Символьные: java.io.Reader, java.io.Writer;
отличия IO от NIO
IO
потокоориентированный
синхронный
NIO
Буфер-ориентированный
асинхронный
IO у тебя данные в потоке мочи
NIO у тебя данные попадают в буфер который ты уже читаешь. ТАк же ты используешь буфер при записи и там указатель сдвигать надо bufera.flip() и смотри не перезапиши данные которые ещё не прочитал и короче боль в жопе
Что вы знаете о классах-надстройках
Классы-надстройки наделяют существующий поток дополнительными свойствами. Примеры классов:BufferedOutputStream,BufferedInputStream,BufferedWriter, BufferedReader— буферизируют поток и повышают производительность.
Что вы знаете о RandomAccessFile
Он наследует напрямую от Object и не наследует от базовых классов ввода вывода.
Предназначен для произвольного доступа к содержимому файла.
Поэтому при использование RandomAccesFile надо знать его структуру.
Что общего и чем отличаются следующие потоки InputStream, OutputStream, Reader, Writer
Они все абстрактные.
Reader и Writer работают с символами.В случае ошибок передают исключениеIOException.
InputStream работает с байтовым вводом. Его классы получают данные из различных источников:
— массив байтов
— строка (String)
— файл
— канал (pipe): данные помещаются с одного конца и извлекаются с другого
— последовательность различных потоков, которые можно объединить в одном потоке
— другие источники (например, подключение к интернету)
OutputStream определяет потоковый байтовый вывод. Его классы могут направлять данные
- в массив байтов
- файл
- канал
RandomAccessFile режимы доступа
«r» - режим чтения
«rw» - чтение/запись
«rws» - чтение/запись и моментальное сохранение каждого изменения данных.
Scanner
Scanner x = new Scanner(system.in); x.useDelimiter(',') x.nextInt() или nextLint или анологичные x.skip(x.delimiter()) Если читаешь например из файл можно использовать такой конструктор: scanner = new Scanner(new Filereader("File.txt"))
serializable
Если хочешь превратить объект класса в набор байтов чтобы отправить куда-то или записать в файл с помощью ObjectOutputStream то класс этого объекта должен implements serializable
Если есть поле которое не надо сохранять то пишешь ключевое слово transient
Какой класс предназначен для работы с элементами файловой системы (ЭФС)
классFile
Какой класс предназначен для работы с элементами файловой системы (ЭФС)
классFile