Android PipedOutputStream / PipedInputStream逐字节传输似乎有误

时间:2011-03-01 08:37:20

标签: java android inputstream outputstream

PipedOutputStream的Android实现

write(byte[] buffer, int offset, int count) 

以write(byte oneByte)实现。 更具体的是PipedOutputStream

write(byte[] buffer, int offset, int count)

通过循环实现     byte []缓冲区 并为每个字节调用write(byte oneByte)。请参阅this

以这种方式执行此操作会导致在PipedInputStream上为每个字节进行接收调用。这种接收会产生一个notifyAll,它会唤醒读者并使其读取。你会以这种方式获得大量的一个字节读取。

我可以看到它是一个正确的实现,但速度很慢。 可能有一些Java约定以某种方式使这个错误?因为现在PipedOutputStream上的数组写入与PipedInputStream通知交错。

写[a b c]结果写(a)通知写(b)通知写(c)通知。

1 个答案:

答案 0 :(得分:0)

是的,您链接的代码似乎暗示它使用OutputStream的默认实现来按原样发送每个byte。据我所知,这个 实际上是正确的,但可能效率很低。