Как перехватить ввод/вывод консольного приложения в java?

Пользователь

от hobart.rath , в категории: Java , 7 месяцев назад

Как перехватить ввод/вывод консольного приложения в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от edyth , 5 месяцев назад

@hobart.rath 

Для перехвата ввода/вывода консольного приложения в Java можно использовать класс System и его методы setIn и setOut.


Для перехвата ввода консоли можно использовать метод setIn для перенаправления стандартного потока ввода System.in на другой InputStream, например, на Scanner для чтения пользовательского ввода:

1
2
Scanner scanner = new Scanner(new FileInputStream("input.txt"));
System.setIn(new BufferedInputStream(new FileInputStream("input.txt")));


Для перехвата вывода консоли можно использовать метод setOut для перенаправления стандартного потока вывода System.out на другой PrintStream, например, на файл или на ByteArrayOutputStream:

1
2
3
4
5
6
PrintStream fileStream = new PrintStream(new FileOutputStream("output.txt"));
System.setOut(fileStream);

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
PrintStream byteStream = new PrintStream(outputStream);
System.setOut(byteStream);


Обратите внимание, что System.setIn и System.setOut являются статическими методами и могут изменить глобальное состояние приложения, поэтому их использование должно быть ограничено, чтобы не привести к неожиданным результатам в других частях приложения.