문자열에서 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
'programing' 카테고리의 다른 글
| NumPy의 ndarray와 어레이의 차이점은 무엇입니까? (0) | 2022.09.25 |
|---|---|
| 보이드 함수에서 복귀 (0) | 2022.09.25 |
| mariadb에서 외부 키를 계단식으로 사용하면 트리거가 활성화됩니까? (0) | 2022.09.25 |
| 현재 디렉토리의 모든 하위 디렉토리 목록 가져오기 (0) | 2022.09.25 |
| 전략 패턴과 명령 패턴의 차이 (0) | 2022.09.25 |