특정 유형의 개체와 PrintStream
인쇄 할 개체를 가져 와서 해당 개체의 표현을 출력 하는 함수가 있습니다. 이 함수의 출력을 문자열로 캡처하려면 어떻게해야합니까? 구체적으로는 toString
방법 으로 사용하고 싶습니다 .
답변
ByteArrayOutputStream
버퍼로 사용 :
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final String utf8 = StandardCharsets.UTF_8.name();
try (PrintStream ps = new PrintStream(baos, true, utf8)) {
yourFunction(object, ps);
}
String data = baos.toString(utf8);
답변
생성자에 전달 된 ByteArrayOutputStream을 사용하여 PrintStream을 생성 할 수 있으며 나중에 PrintStream에 기록 된 텍스트를 가져 오는 데 사용할 수 있습니다.
ByteArrayOutputStream os = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(os);
...
String output = os.toString("UTF8");
답변
이전 답변의 통합 인이 답변은 Java 1.7 이상에서 작동합니다. 또한 Streams를 닫는 코드를 추가했습니다.
final Charset charset = StandardCharsets.UTF_8;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos, true, charset.name());
yourFunction(object, ps);
String content = new String(baos.toByteArray(), charset);
ps.close();
baos.close();
답변
아마도이 질문이 도움이 될 것입니다. 출력
스트림을 문자열로 가져옵니다.
OutputStream을 하위 클래스로 만들고이를 PrintStream에 래핑합니다.
답변
문자열 변수 myStrLine을 사용하여 입력 문자열 스트림을 생성하는 inSS라는 스캐너 변수를 정의하고 초기화합니다.
정답 : 스캐너 inSS = new Scanner (myStrLine);