InputStream缓冲区如何工作?

时间:2014-01-22 15:51:59

标签: java android buffer

我正在使用InputStream缓冲区,如下所示。我想知道它什么时候实际缓冲(填充数据)...我正在用互联网流喂它。我在Log之前和之后放了len = in.read(buffer),但它们是在同一时间记录的(所以这个过程不在这里)。

    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");

1 个答案:

答案 0 :(得分:2)

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

This method blocks until input data is available, end of file is detected, or an exception is thrown.

换句话说,当它有要提交的数据时,它正在被填充。 打开连接时,可以读取数据。这就是InputStream不必等待任何事情的原因。