문자열에 출력 스트림 가져오기
java.io에서 출력을 파이핑하는 가장 좋은 방법은 무엇입니까?문자열에 대한 출력 스트림(Java)
예를 들어 다음과 같은 방법이 있습니다.
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();
}
}
하지만 더 좋은 방법은 없을까?테스트만 하면 돼!
를 사용하고 싶다.ByteArrayOutputStream
종료 후 다음 연락처로 문의해 주십시오.
new String( baos.toByteArray(), codepage );
또는 그 이상:
baos.toString( codepage );
를 위해String
컨스트럭터,codepage
이 될 수 있다String
또는 java.nio.charset 인스턴스입니다.Charset.가능한 값은 java.nio.charset 입니다.표준 문자 세트UTF_8.
방법toString()
a만 받아들이다String
로서codepage
파라미터(스탠드 Java 8).
Apache Commons IO 라이브러리를 좋아합니다.이 버전의 ByteArrayOutputStream은toString(String enc)
방법뿐만 아니라toByteArray()
Commons 프로젝트와 같이 신뢰할 수 있는 기존 컴포넌트를 사용하면 코드를 더 작게 만들고 확장 및 용도 변경을 쉽게 할 수 있습니다.
이것은 잘 작동했다.
OutputStream output = new OutputStream() {
private StringBuilder string = new StringBuilder();
@Override
public void write(int b) throws IOException {
this.string.append((char) b );
}
//Netbeans IDE automatically overrides this toString()
public String toString() {
return this.string.toString();
}
};
메서드 호출 =>>marshaller.marshal( (Object) toWrite , (OutputStream) output);
그런 다음 문자열을 인쇄하거나 가져오려면 "출력" 스트림 자체를 참조합니다. 예를 들어 문자열을 콘솔로 인쇄하려면 =>>System.out.println(output);
참고로 내 메서드 호출marshaller.marshal(Object,Outputstream)
XML 관련 작업입니다.이 주제와는 무관합니다.
생산용으로 사용하기에는 낭비가 심하고, 변환이 너무 많고, 조금 느슨합니다.이것은 커스텀 OuputStream을 생성하여 문자열을 출력할 수 있음을 증명하기 위해 코드화된 것입니다.하지만 Horcrux7을 사용하면 두 번의 메서드 호출만으로 모든 것이 가능합니다.
그리고 세상은 다른 날에 살고 있다...
제가 하게 된 일은 다음과 같습니다.
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
.
baos.toString(StandardCharsets.UTF_8);
이름 있는 문자 집합을 사용하여 바이트를 디코딩하여 버퍼의 내용을 문자열로 변환합니다.
Java 17 - https://docs.oracle.com/
언급URL : https://stackoverflow.com/questions/216894/get-an-outputstream-into-a-string
'IT이야기' 카테고리의 다른 글
Vuex에서 커밋된 돌연변이를 중지하는 방법 (0) | 2022.06.04 |
---|---|
gcc, 엄격한 별칭 및 공포 이야기 (0) | 2022.06.04 |
Safari용 vue-devtools 확장이 있습니까? (0) | 2022.06.04 |
라우터 뷰 콘텐츠가 렌더링되지 않음 (0) | 2022.06.04 |
null 포인터와 void 포인터의 차이점은 무엇입니까? (0) | 2022.06.04 |