> Java > java지도 시간 > Java에서 콘솔 출력을 문자열로 리디렉션하는 방법은 무엇입니까?

Java에서 콘솔 출력을 문자열로 리디렉션하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-10-30 01:27:02
원래의
1008명이 탐색했습니다.

How to Redirect Console Output to a String in Java?

Java의 문자열로 콘솔 출력 리디렉션

문제:

값을 반환하지 않는 메서드를 고려하세요. 하지만 출력을 콘솔에 직접 인쇄합니다. 추가 처리를 위해 이 출력을 문자열로 검색하려고 합니다. 그러나 메서드의 반환 유형을 수정하는 것은 옵션이 아닙니다.

해결책:

Java에서는 다음 단계를 통해 콘솔 출력을 문자열로 리디렉션할 수 있습니다.

  1. System.out 출력 캡처:

    기본적으로 콘솔 출력은 System.out에 기록됩니다. 이 출력을 캡처하려면 System.setOut 메서드를 사용하여 출력 대상을 전환합니다.

  2. ByteArrayOutputStream 사용:

    ByteArrayOutputStream 객체를 생성합니다. 출력을 바이트 배열로 저장합니다.

  3. PrintStream 만들기:

    생성자를 사용하여 PrintStream을 ByteArrayOutputStream에 연결합니다. 이 스트림은 System.out 출력을 바이트 배열로 리디렉션합니다.

  4. 출력 리디렉션:

    새로 생성된 PrintStream을 사용하여 System.setOut을 호출합니다. 논쟁. 이렇게 하면 System.out의 대상이 ByteArrayOutputStream으로 효과적으로 변경됩니다.

  5. 문자열로 출력 검색:

    원하는 출력을 콘솔에 인쇄한 후 , PrintStream을 플러시하고 System.out을 원래 대상으로 재설정한 다음 마지막으로 ByteArrayOutputStream.toString()을 사용하여 바이트 배열을 문자열로 변환하여 문자열로 검색할 수 있습니다.

예:

<code class="java">// Create a stream to hold the output
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);

// IMPORTANT: Save the old System.out!
PrintStream old = System.out;

// Tell Java to use your special stream
System.setOut(ps);

// Print some output: goes to your special stream
System.out.println("Foofoofoo!");

// Put things back
System.out.flush();
System.setOut(old);

// Show what happened
System.out.println("Here: " + baos.toString());</code>
로그인 후 복사

이 프로그램은 다음을 인쇄합니다.

Here: Foofoofoo!
로그인 후 복사

위 내용은 Java에서 콘솔 출력을 문자열로 리디렉션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿