java Android PipedOutStream/PipedInputStream逐字节传输似乎是错误的
PipedoutpStream的Android实现
write(byte[] buffer, int offset, int count)
以写入方式实现(字节一字节)。 更具体的是PipedOutputStream
write(byte[] buffer, int offset, int count)
通过在 字节[]缓冲区 并为每个字节调用write(字节一字节)。见this
这样做会导致对PipedInputStream的每个字节进行接收调用。此receive会导致notifyAll,从而唤醒读卡器并使其读取。通过这种方式可以读取大量的单字节数据
我可以看出这是一个正确的实现,但速度很慢。 是否有某种Java约定在某种程度上导致了这种错误?因为数组在PipedOutputStream上的写入现在与对PipedInputStream的通知交织在一起
write[abc]导致write(a)notify write(b)notify write(c)notify
# 1 楼答案
是的,您链接的代码似乎暗示它使用默认的
OutputStream
实现按原样发送每个byte
。据我所知,这个实际上是正确的,但可能效率很低