Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android PipedOutStream/PipedInputStream逐字节传输似乎是错误的_Java_Android_Inputstream_Outputstream - Fatal编程技术网

Java Android PipedOutStream/PipedInputStream逐字节传输似乎是错误的

Java Android PipedOutStream/PipedInputStream逐字节传输似乎是错误的,java,android,inputstream,outputstream,Java,Android,Inputstream,Outputstream,PipedOutputStream的Android实现 write(byte[] buffer, int offset, int count) write(byte[] buffer, int offset, int count) 以写入方式实现(字节一字节)。 更具体的是PipedOutputStream write(byte[] buffer, int offset, int count) write(byte[] buffer, int offset, int count) 通

PipedOutputStream的Android实现

write(byte[] buffer, int offset, int count) 
write(byte[] buffer, int offset, int count)
以写入方式实现(字节一字节)。 更具体的是PipedOutputStream

write(byte[] buffer, int offset, int count) 
write(byte[] buffer, int offset, int count)
通过在 字节[]缓冲区 并为每个字节调用write(byte one byte)。看

以这种方式执行此操作将导致对PipedInputStream的每个字节进行接收调用。此接收将导致notifyAll,从而唤醒读卡器并使其读取。通过这种方式可以读取大量的单字节数据

我可以看出这是一个正确的实现,但速度很慢。 是否有某种Java约定在某种程度上导致了这种错误?因为数组在PipedOutStream上的写入现在与通知PipedInputStream交错


写入[a b c]会导致写入(a)notify write(b)notify write(c)notify。

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

我已经看到它使用自己的/android默认OutputStream实现。可能会有一些惯例,不以字节副本的形式写入数组副本(因为在每个字节副本上,它都会通知读卡器)。也许安卓团队想要解决这个问题。事实上,我查找了oracle实现,它使用了高效的实现