How do I convert a String to an InputStream in Java?
有一字符串:
1
| String exampleString ="example"; |
我如何转换它在InputStream?
这样地:
注意,这假设您需要一个inputstream,它是一个字节流,表示您的原始字符串编码为utf-8。
对于小于7的Java版本,用EDCOX1引用1替换"EDCOX1×0"。
- 执行以下操作时,此字符集是否会丢失:string->bytearrayinputstream?在例如"&252;"上尝试此操作时,字节将具有正确的字母,但bytearrayinputstream将丢失正确的转换。还是我错了?
- 标准字符集要求最低API级别19。
- @约拿坦拉莫斯,要举行转换不是靠这条河。这取决于将字节解码回字符串的方式。
- @对于任何API级别,都可以使用charset.forname("utf-8"),而不是standardcharset.utf_8。
- 它的工作只是我添加字符串newstr=urldecoder.decode(urlencoder.encode(response,"iso8859-1"),"utf-8");for(utf8)
- 对于Okhttp3用户:不要使用这种方法,它会破坏应该在WebView上显示的图像。只需使用:response.body().bytestream()byteStream()方法。
我发现使用ApacheCommonsIO可以让我的生活更轻松。
1 2
| String source ="This is the source of my input stream";
InputStream in = org. apache. commons. io. IOUtils. toInputStream(source, "UTF-8"); |
您可能会发现,库还提供了许多其他快捷方式,可用于通常完成的任务,您可以在项目中使用这些任务。
- 他们使用了新的bytearrayinputstream(例如string.getbytes("utf-8"))。因此,将优化使用inputstream stream=new bytearrayinputstream的方法(例如string.getbytes("utf-8"));
- @ PankajKumar:JAVA的JIT编译器不仅仅能够内嵌这一点。
- 使用不指定编码的方法是个糟糕的主意…
- @b1naryatrphy:ApacheCommons包含另一种形式的这种方法,它将编码作为第二个参数(您是对的,最好是这样):inputstream in=ioutils.toinputstream(source,"utf-8");
- 您可以使用StandardCharsets.UTF_8定义而不是纯文本。
您可以使用StringReader,并使用另一个StackOverflow Post中的解决方案将该阅读器转换为输入流。