java - 输入流缓冲区如何工作?

标签 java android buffer

我正在使用一个InputStream缓冲区,如下所示。我想知道它何时实际缓冲(用数据填充自身)...我正在用互联网流为其提供数据。我在 len = in.read(buffer) 之前和之后放置了 Log,但它们是同时登录的(因此该过程不在这里)。

    conn = new URL(StringUrls[0]).openConnection();
    conn.setReadTimeout(5000);
    conn.setConnectTimeout(5000);
    in = conn.getInputStream();
    int len=-1;
    buffer = new byte[1024];

    Log.v("buffer", "buffering...");

    len = in.read(buffer);

    Log.v("buffer", "buffered");

最佳答案

http://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html#read(byte[])状态:

此方法会阻塞,直到输入数据可用、检测到文件结尾或引发异常为止。

换句话来说,当它有要归档的数据时,它就被填充了。 当您打开连接时,数据就可以读取了。这就是为什么 InputStream 不需要等待任何事情。

关于java - 输入流缓冲区如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21287636/

相关文章:

java - 系统时间和日志文件中的时间不同。

android - Google Maps API V2 - 总是出现身份验证错误

ios - OSX/iOS : Reading a . WAV 到 float 缓冲区

java - 使用 Ctrl+C 携带存储语句的缓冲区

java - 将维基百科页面的内容获取到 Android

java - 如何在 JBoss 中预览服务器上的文件

java - 为什么 FileWriter 不创建新文件?

android - 在 ListView 中创建 ListView

android - 实现 AsyncTask 线程的问题

file - 文件在 Windows 上填充了数据,但在 Linux 上没有