Java Streaming如何实际工作?

时间:2015-03-02 11:30:42

标签: java io streaming

java输入流实际上如何工作?例如,当您调用inputstream.read()时,Java如何将文件分解为数据包? java是否关心文件是.mp3,.doc,.txt,.mov? java io如何将所有这些不同的文件类型分解为可以流式传输的数据包?

我非常感谢有关此主题的任何答案。

2 个答案:

答案 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