programing

문자열에서 InputStream을 작성하려면 어떻게 해야 하나요?

sourcejob 2022. 9. 25. 00:20
반응형

문자열에서 InputStream을 작성하려면 어떻게 해야 하나요?

Java의 스트림에 익숙하지 않습니다. 어떻게 하면 이 스트림을 만들 수 있습니까?InputStream에서String?

여기 있습니다.

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

업데이트 멀티바이트 지원용 (Aaron Waibel의 의견 덕분에):

InputStream is = new ByteArrayInputStream(Charset.forName("UTF-16").encode(myString).array());

ByteArrayInputStream 매뉴얼을 참조하십시오.

위의 String #getBytes(charset) 메서드에서 charset 인수를 사용하는 것이 안전합니다.

JDK 7+ 이후에는

java.nio.charset.StandardCharsets.UTF_16

하드 코드화된 인코딩 문자열 대신:

InputStream is = new ByteArrayInputStream(StandardCharsets.UTF_16.encode(myString).array());

다음과 같이 할 수 있습니다.

InputStream in = new ByteArrayInputStream(string.getBytes("UTF-8"));

주의:UTF-8부호화를 실시합니다.바이트를 부호화할 문자 세트를 지정해야 합니다.선택하는 것은 일반적입니다.UTF-8특별히 필요하신 게 없으시면 말씀해주세요.그렇지 않으면 아무것도 선택하지 않으면 기본 인코딩이 시스템에 따라 다를 수 있습니다.JavaDoc에서:

이 문자열을 기본 문자 집합으로 인코딩할 수 없는 경우의 이 메서드의 동작은 지정되지 않습니다.인코딩 프로세스에 대한 추가 제어가 필요한 경우 CharsetEncoder 클래스를 사용해야 합니다.

InputStream in = new ByteArrayInputStream(yourstring.getBytes());

자바 7+

이 기능을 이용할 수 있습니다.StandardCharsetsJDK 클래스:

String str=...
InputStream is = new ByteArrayInputStream(StandardCharsets.UTF_16.encode(str).array());

Java 7부터는 다음 관용구를 사용할 수 있습니다.

String someString = "...";
InputStream is = new ByteArrayInputStream( someString.getBytes(StandardCharsets.UTF_8) );

CharSet.forName 대신 com.google.common.base를 사용합니다.Google의 Guava(http://code.google.com/p/guava-libraries/wiki/StringsExplained#Charsets)가 조금 더 친절합니다.

InputStream is = new ByteArrayInputStream( myString.getBytes(Charsets.UTF_8) );

어떤 CharSet을 사용할지는 물론 InputStream에서 무엇을 할지에 따라 달라집니다.

언급URL : https://stackoverflow.com/questions/5720524/how-does-one-create-an-inputstream-from-a-string

반응형