Часто так бывает, что нам нужно ввести куда-то информацию и откуда-то ее вывести. Например, извлечь что-нибудь из файла или записать туда что-либо.
При этом логично, что разные источники (будь-то файл или консоль или что-либо еще) с которыми мы совершаем ввод/вывод различны по своему устройству, соответственно и средства для взаимодействия с этими разными источниками должны быть разными. Например, чтобы вводить информацию в файлик и выводить информацию из файлика используются одни средства, а для ввода/вывода в консоль уже другие средства, для ввода/вывода куда-то еще другие.
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, что можно указать кодировку).
Пример программы:
Вывод:
