如何从字符串中获取输入流



有一个场景,其中http实体在输入流中具有图像的二进制数据,为了进一步处理,它被转换为库文件中的字符串[String str = EntityUtils.toString(httpResponse.getEntity())],现在我试图从该字符串中获取输入流。

采用以下方案来了解问题:

工作 - 图像视图与内容一起显示

InputStream inStream = getContentResolver().openInputStream(thisPhotoUri);
Bitmap bm = BitmapFactory.decodeStream(inStream);
ImageView view = (ImageView)findViewById(R.id.picture_frame);
view.setImageBitmap(bm);

问题 - 图像视图不与图像一起显示

InputStream inStream = getContentResolver().openInputStream(thisPhotoUri);
String str = inStream.toString();
InputStream is = new ByteArrayInputStream(str.getBytes());
Bitmap bm = BitmapFactory.decodeStream(is);
ImageView view = (ImageView)findViewById(R.id.picture_frame);
view.setImageBitmap(bm);

不能直接将输入流转换为字符串。这可能是问题所在。

String str = inStream.toString();

看看这个来确定将输入流转换为字符串的方法。

InputStream.toString()

做,你所期望的。它将调用 Object.toString() 方法,你会得到类似 java.io.InputStream@604c9c17 的东西,而不是流的真实内容!

尝试一个System.out.println(str);,看看它的价值是什么。

这就是为什么你不能从这个内容重新生成原始InputStream,因为它不是InputStream的内容

您必须以另一种方式读取流才能将内容发送到String!请参阅:读取/转换输入流到字符串

这应该是您要查找的内容:

InputStream stream = new ByteArrayInputStream(yourString.getBytes("UTF-8"));

相关内容

  • 没有找到相关文章

最新更新