java输入流实际上如何工作?例如,当您调用inputstream.read()时,Java如何将文件分解为数据包? java是否关心文件是.mp3,.doc,.txt,.mov? java io如何将所有这些不同的文件类型分解为可以流式传输的数据包?
我非常感谢有关此主题的任何答案。
答案 0 :(得分:2)
当你调用inputstream.read()时,Java如何将文件分解为数据包?
没有。文件没有数据包。
java是否关心文件是.mp3,.doc,.txt,.mov?
没有
java io如何将所有这些不同的文件类型分解为可以流式传输的数据包?
没有。这些文件是 byte -streams,这是底层资源和操作系统的属性,而不是Java。
答案 1 :(得分:1)
从流中读取单个字节时,read()
方法将阻塞,直到数据可用。
某些流可能以块而不是按字节获取数据,但块大小完全取决于实现(从压缩流中读取,从基于块密码的加密流读取,... )。
您可以询问流可以在不阻塞的情况下读取多少字节(InputStream.available()
),如果您需要知道缓冲是否以及缓冲多少。
Java还提供了一个BufferedInputStream
类,它包装任何流并可以进行缓冲读取。可以指定缓冲区大小(默认值为8 kB)。
使用文件流时,文件类型对缓冲行为没有影响。在阅读和写入文件时,建议始终使用BufferedInputStream
/ BufferedOutputStream
。