Часто так бывает, что нам нужно ввести куда-то информацию и откуда-то ее вывести. Например, извлечь что-нибудь из файла или записать туда что-либо.
При этом логично, что разные источники (будь-то файл или консоль или что-либо еще) с которыми мы совершаем ввод/вывод различны по своему устройству, соответственно и средства для взаимодействия с этими разными источниками должны быть разными. Например, чтобы вводить информацию в файлик и выводить информацию из файлика используются одни средства, а для ввода/вывода в консоль уже другие средства, для ввода/вывода куда-то еще другие.
Java предоставляет множество разных средств (разных классов) для ввода/вывода будь-то работа с файлами, консолью или другими источниками.
В Java есть два основных вида классов-потоков для ввода-вывода:
Inputstream
,Outputstream
– ввод/вывод куда-либо неструктурированной последовательности байтов. (представляют удобные средства для передачи байтов)Writer
,Reader
– ввод/вывод куда-либо последовательности символов Unicode (представляют удобные средства для передачи символов).
У этих классов есть подклассы. В этом уроке мы разберем потоки PrintWriter
и PrintStream
.
PrintWriter и PrintStream
Рассмотрим PrintWriter
и PrintStream
.
Самые простые потоки ввода/вывода – это System.in
и System.out
. Для ввода и вывода информации в консоль соответственно.
out
– это на самом деле объект класса PrintStream. print()
println()
– методы этого класса. Поток PrintStream с помощью print() или println() превращает переданный аргумент в один из этих методов в строку и передает в другой поток вывода куда-нибудь.
out создан за кулисами так, чтобы он выводил информацию в консоль.
PrintWriter
PrintStream
(нужны для передачи строк в поток) – print() println() превращают переданные аргументы в строки и передают их в какой-то поток.
PrintStream
печатает на OutputStream, а PrintWriter
– на Writer(основное преимущество Writer, что можно указать кодировку).
Пример программы:
Вывод:
