[java] Java에서 String을 InputStreamReader로 바꾸는 방법은 무엇입니까?

String값을로 변환 하려면 InputStreamReader어떻게해야합니까?



답변

ByteArrayInputStream 도 트릭을 수행합니다.

InputStream is = new ByteArrayInputStream( myString.getBytes( charset ) );

그런 다음 리더로 변환하십시오.

InputStreamReader reader = new InputStreamReader(is);


답변

나는 또한 아파치 커먼즈 IOUtils클래스를 발견했다 .

InputStreamReader isr = new InputStreamReader(IOUtils.toInputStream(myString));


답변

특별히 InputStreamReader 여야합니까? 어떻게 사용에 대한 StringReader를을 ?

그렇지 않으면 StringBufferInputStream을 사용할 수 있습니다. 있지만 문자 변환 문제로 인해 더 이상 사용되지 않으므로 StringReader를 선호해야합니다.


답변

@Dan 과 같은 질문 -왜 StringReader가 아닌가?

InputStreamReader 여야하는 경우 :

String charset = ...; // your charset
byte[] bytes = string.getBytes(charset);
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
InputStreamReader isr = new InputStreamReader(bais);


답변

당신은) 도착하려고 Reader밖으로 기능을 InputStreamReader, 또는 b) InputStream중 기능 InputStreamReader? 당신은 얻을 수 없습니다 b). InputStreamReader이 아닙니다 InputStream.

목적은 바이트의 소스 InputStreamReader를 취하여 InputStream바이트를 a 형식으로 문자로 디코딩하는 것 Reader입니다. 이미 데이터를 문자 (원래 문자열)로 가지고 있습니다. 문자열을 바이트로 인코딩하고 바이트를 문자로 다시 디코딩하는 것은 중복 작업입니다.

Reader소스를 사용하지 않으려면을 사용하십시오 StringReader.

InputStream(바이트 만 제공) 을 얻으려는 경우 IOUtils.toInputStream(..)여기에 다른 답변에서 제안한 아파치 공통 을 사용 하십시오.


답변

당신은 Cactoos 를 시도 할 수 있습니다 :

InputStream stream = new InputStreamOf(str);

그런 다음 필요한 경우 Reader:

Reader reader = new ReaderOf(stream);


답변