[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-i-o-nio-sushchestvuet-li-vozmozhnost-perenapravit-potoki-standartnogo-vvoda-vyvoda":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":18,"progress":19,"seo":20},679,"sushchestvuet-li-vozmozhnost-perenapravit-potoki-standartnogo-vvoda-vyvoda",15,"i-o-nio","I\u002FO & NIO","📁","Существует ли возможность перенаправить потоки стандартного ввода\u002Fвывода?","Да, класс `System` предоставляет статические методы для перенаправления стандартных потоков ввода\u002Fвывода.\n\n| Метод | Назначение |\n|---|---|\n| `System.setIn(InputStream)` | Перенаправление стандартного ввода (`System.in`) |\n| `System.setOut(PrintStream)` | Перенаправление стандартного вывода (`System.out`) |\n| `System.setErr(PrintStream)` | Перенаправление стандартного потока ошибок (`System.err`) |\n\nПо умолчанию `System.in` связан с клавиатурой (stdin), `System.out` и `System.err` — с консолью (stdout, stderr). Перенаправление позволяет, например, записывать вывод программы в файл, читать ввод из файла или перехватывать вывод для тестирования.\n\n### Практические примеры\n\n```java\n\u002F\u002F Перенаправление вывода в файл\nPrintStream fileOut = new PrintStream(new FileOutputStream(\"output.log\"));\nSystem.setOut(fileOut);\nSystem.out.println(\"Это запишется в файл\");\n\n\u002F\u002F Перенаправление ввода из файла\nSystem.setIn(new FileInputStream(\"input.txt\"));\nScanner scanner = new Scanner(System.in);\nString line = scanner.nextLine(); \u002F\u002F читает из файла\n\n\u002F\u002F Перехват вывода для тестирования\nByteArrayOutputStream baos = new ByteArrayOutputStream();\nSystem.setOut(new PrintStream(baos));\nmyMethod(); \u002F\u002F вызов тестируемого метода\nString output = baos.toString();\n```\n\nНа практике перенаправление `System.out`\u002F`System.err` используется редко — для логирования существуют специализированные фреймворки (SLF4J, Logback). Однако перенаправление бывает полезно в тестах и утилитах командной строки.\n\n> **На собеседовании:** назовите три метода `setIn()`, `setOut()`, `setErr()`. Приведите пример использования — перехват вывода для тестирования.","","junior",[15,16,17],"core","основы","io",[],null,{"title":21,"description":22,"ogTitle":23,"ogDescription":24,"keywords":25,"schemaAnswer":36,"featuredSnippetReady":37},"Перенаправление стандартного ввода\u002Fвывода Java — Gymterview","Перенаправление System.in, System.out, System.err через setIn(), setOut(), setErr(). Примеры: запись в файл, перехват вывода для тестирования.","Перенаправление потоков ввода\u002Fвывода в Java — Gymterview","Как перенаправить System.in, System.out, System.err через статические методы класса System.",[26,27,28,29,30,31,32,33,34,35],"System.setIn","System.setOut","System.setErr","перенаправление","stdin","stdout","stderr","PrintStream","Java","собеседование","Да, класс System предоставляет методы: setIn(InputStream) — перенаправление stdin, setOut(PrintStream) — stdout, setErr(PrintStream) — stderr. Позволяет записывать вывод в файл, читать ввод из файла или перехватывать вывод для тестирования через ByteArrayOutputStream.",true]