如何从String返回InputStream

时间:2014-02-20 10:15:23

标签: java android inputstream raw-data httpentity

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

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

正在运行 - 显示内容

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

问题 - ImageView不显示图像

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);

3 个答案:

答案 0 :(得分:1)

InputStream.toString()没有做到,你期待的是什么。它将调用Object.toString()方法,您将获得类似java.io.InputStream@604c9c17的内容,而不是流的真实内容!

尝试使用System.out.println(str);查看其价值是什么。

这就是为什么您无法从此内容重新生成原始InputStream的原因,因为它不是InputStream内容

您必须以另一种方式阅读流,才能将内容发送到String!请参阅:Read/convert an InputStream to a String

答案 1 :(得分:1)

您无法直接将InputStream转换为String。这可能是个问题。

String str = inStream.toString();

Take a look at this以确定将InputStream转换为String的方式。

答案 2 :(得分:-1)

这应该是你要找的东西:

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