昌鑫号

outputstream转inputstream(outputstream转byte)

outputstream转inputstream, 如何将outputstream转换成inputstream?不知道小伙伴们今天来看看边肖的分享吧!

有三种方法可以将outputstream转换成inputstream。

方法1:使用字节数组缓存数据,并输入代码:

ByteArrayOutputStream out=new ByteArrayOutputStream();

class1.putDataOnOutputStream(out);

class2.processDataFromInputStream(

new ByteArrayInputStream(out.toByteArray())

);

outputstream转byte

方法二:使用管道。

第一种方法的问题是你必须有足够的内存来缓存所有的数据。您可以使用文件系统来缓存更多的数据,但是您可以处理的数据大小仍然是有限的。

解决方案是创建一个线程来为PipedOutputStream生成数据。当前线程可以从中读取数据。

输入代码:

PipedInputStream in=new PipedInputStream();

PipedOUtputStream out=new PipedOutputStream(in);

new Thread(

new Runnable(){

public void run(){

class1.putDataOnOutputStream(out);

}

}

).start();

class2.processDataFromInputStream(in);|||

outputstream转byte

方法三:使用循环缓冲区。

第二种方法中的两个管道流实际上管理一个隐藏的循环缓冲区。使用显式循环缓冲区更容易理解。循环缓冲液有以下优点。

一个CircularBuffers类而不是两个pipeline类。

它比缓存所有数据和额外线程更容易使用。

可以改变缓存大小,而不受流水线缓存区1K的固定缓存大小的限制。

多线程案例:

CircularByteBuffer cbb=new CircularByteBuffer();

new Thread(

new Runnable(){

public void run(){

class1.putDataOnOutputStream(cbb.getOutputStream());

}

}

).start();

class2.processDataFromInputStream(cbb.getInputStream());

单线程案例

//buffer all data in a circular buffer of infinite size

CircularByteBuffer cbb=new CircularByteBuffer(CircularByteBuffer.INFINITE_SIZE);

class1.putDataOnOutputStream(cbb.getOutputStream());

class2.processDataFromInputStream(cbb.getInputStream());

outputstream转inputstream,以上就是本文为您收集整理的outputstream转inputstream最新内容,希望能帮到您!更多相关内容欢迎关注。

      
上一篇