来自 OutputStream 的 ByteArrayOutputStream
Posted
技术标签:
【中文标题】来自 OutputStream 的 ByteArrayOutputStream【英文标题】:ByteArrayOutputStream from OutputStream 【发布时间】:2011-05-04 04:42:48 【问题描述】:如何在 Java 中从 ByteArrayOutputStream 创建 OutputStream
【问题讨论】:
从您的 cmets 中,您似乎想要从 OutputStream 创建一个 ByteArrayOutputStream。 “我得到了 OutputStream”和“这是相反的!”你真的是这个意思吗? 这么糟糕的标题 【参考方案1】:以下运行没有错误:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
OutputStream outStream = stream;
如果您查看 ByteArrayOutputStream 的文档,您会发现它扩展了 OutputStream。
【讨论】:
不需要转换为OutputStream
。
@WhiteFang34:我只是删除它。【参考方案2】:
ByteArrayOutputStream
是OutputStream
的子类。
ByteArrayOutputStream bos = ...;
OutputStream os = bos;
【讨论】:
当我这样做时,我在 android 中遇到类转换异常:D 你不应该这样。实际上假设您可以控制该对象,您应该从 OutputStream os=new ByteArrayOutputStream() 开始...... 我从 ContentProvider 获得 OutputStream,但它实际上不在我的控制范围内。 @taranfx 只有在强制转换完成时才会出现 ClassCastException。我的示例代码中没有演员表。正如 MJB 所说,可能不需要直接处理 ByteArrayOutputStream 类型,因为 OutputStream 包含所有相关的主格类型信息。【参考方案3】:ByteArrayOutputStream
是 OutputStream
。 IE。你可以像这样分配它:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
OutputStream out = baos;
【讨论】:
反向?你在说什么? 我想他想要一个来自 OutputStream 的 BAOS(它是从 HttpUrlConnection.getOutputStream() 之类的东西中获得的),这也是我所处的情况!【参考方案4】:你可以像下面这样创建一个辅助方法:
public OutputStream convert(ByteArrayOutputStream arrayOutputStreamParam)
return arrayOutputStreamParam;
【讨论】:
以上是关于来自 OutputStream 的 ByteArrayOutputStream的主要内容,如果未能解决你的问题,请参考以下文章
C#中string转二进制一定要先编码吗?byte[] byteArr = Encoding.Default.GetBytes(str);