[java] OutputStream를 String에 가져 오기


1 Answers

나는 Apache Commons IO 라이브러리를 좋아한다. toString(String enc) 메서드와 toByteArray() 가있는 ByteArrayOutputStream 버전을 살펴보십시오. Commons 프로젝트와 같이 기존의 신뢰할 수있는 구성 요소를 사용하면 코드를 더 작고 확장하고 용도 변경하기가 더 쉽습니다. 행운을 빕니다.

Question

java.io.OutputStream의 출력을 Java의 String으로 파이프하는 가장 좋은 방법은 무엇입니까?

방법이 있다고 해봅시다.

  writeToStream(Object o, OutputStream out)

오브젝트로부터 지정된 스트림에 특정의 데이터를 기입합니다. 그러나이 출력을 가능한 한 쉽게 String으로 가져 오려고합니다.

나는 (테스트되지 않은)이 클래스를 작성하는 것을 고려하고있다.

class StringOutputStream extends OutputStream {

  StringBuilder mBuf;

  public void write(int byte) throws IOException {
    mBuf.append((char) byte);
  }

  public String getString() {
    return mBuf.toString();
  }
}

그러나 더 좋은 방법이 있습니까? 나는 단지 시험을하고 싶다!




내가 한 일은 다음과 같습니다.

Obj.writeToStream(toWrite, os);
try {
    String out = new String(os.toByteArray(), "UTF-8");
    assertTrue(out.contains("testString"));
} catch (UnsupportedEncondingException e) {
    fail("Caught exception: " + e.getMessage());
}

os는 ByteArrayOutputStream 입니다.






Related