ZipFile.getInputStream()的read方法和AudioTrack中的write方法
最近发现Java的InputStream是一个很诡异的抽象类,如果对ZipFile.getInputStream()的返回值直接使用int read(byte[] buffer),可能会数据读入不全,而且在运行时很难发现(除非判断返回的字节数)。类似情况也可能出现在AudioTrack.write(byte[] audioData, int offsetInBytes, int sizeInBytes)方法上,写入的数据也有可能不全。操纵这些底层方法读写大块内存时必须非常小心(实际上操作起来有难度,因为在写编码或解码器时调用这类方法可能会很频繁,很难知道哪些读写操作只完成了一半)。