Bil*_*ith 15 java outputstream bytearrayoutputstream wave
我正在尝试将其转换OutputStream为ByteArrayOutput流.我无法找到关于如何做到这一点的任何明确的简单答案.这个问题是在StackOverflow问题的标题中提出的,但问题的主体是如何将a更改ByteArrayStream为OuputStream.我OutputStream已经创建了一个,答案中给出的这个例子将无法编译!
我有一个已经构造的OutputStream,其长度为44字节,称为waveHeader.我想将其转换为ByteArrayOutputStream,因为我希望能够使用waveHeader.ToByteArray()将其更改为byte [],以便在以后的过程中使用;
是否有简单的铸造类型或允许这样的东西?
如果没有那么:
有没有办法在原始OutputStream中构造指向数据的指针,如果无法转换它的话?
如何访问OutputStream中包含的数据?
我是JAVA的新手.这对我来说只是一个爱好.在VisualBasic .net中的流更容易!
eck*_*kes 24
有多种可能的情况:
a)你有一个ByteArrayOutputStream,但它被声明为OutputStream.然后你可以做这样的演员:
void doSomething(OutputStream os)
{
// fails with ClassCastException if it is not a BOS
ByteArrayOutputStream bos = (ByteArrayOutputStream)os;
...
Run Code Online (Sandbox Code Playgroud)
b)如果你有任何其他类型的输出流,将它转换为BOS并没有多大意义.(您通常希望转换它,因为您想要访问结果数组).因此,在这种情况下,您只需设置一个新流并使用它.
void doSomething(OutputStream os)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bos.write(something);
bos.close();
byte[] arr = bos.toByteArray();
// what do you want to do?
os.write(arr); // or: bos.writeTo(os);
...
Run Code Online (Sandbox Code Playgroud)
c)如果你已经向任何类型的OutputStream写了一些东西(你不知道它是什么,例如因为你是从servlet中得到的),那么就无法获得那些信息.你不能写一些你以后需要的东西.解决方案是答案b)您在自己的流中编写它,然后您可以将数组用于您自己的目的,并将其写入实际的输出流.
请记住ByteArrayOutputStreams将所有数据保存在内存中.
你可以使用的writeTo方法ByteArrayOutputStream.
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] bytes = new bytes[8];
bos.write(bytes);
bos.writeTo(oos);
Run Code Online (Sandbox Code Playgroud)
您可以创建一个实例ByteArrayOutputStream.然后,您需要将数据写入此ByteOutputStream实例,然后使用writeTo接受a 的方法,OutputStream您可以ByteArrayOutputStream将输出写入OutputStream您作为参数传递的实例.
| 归档时间: |
|
| 查看次数: |
70425 次 |
| 最近记录: |