1

我目前陷入了Android问题。在一个循环中,我从包含递增 id ( sensor) 的 URL 中读取。如果达到最大值,则循环结束(IOException因为错误 500)。我的问题涉及BufferedReader. 如果我指定大小(例如 8k),我不能读取超过这些 8k,尽管BufferedReader在循环的每次运行中都会重新创建(使用不同的 uri)并且我读取的每个文件只包含一行(<8k)。

如果我省略 size 参数,一切正常,但我会收到类似“使用默认缓冲区大小。最好是明确的......”的警告。我究竟做错了什么?这是我的代码:

sensor = 0;
while (true) {
            try {
                // adapt uri
                BufferedReader in = new BufferedReader(
                        new InputStreamReader(uri.resolve(String.valueOf(sensor))
                                .toURL().openStream()), 8*1024);

                // read from url
                s = in.readLine();
                in.close();
            } catch (IOException e) {
                break;
            }

            ... // do something with s

            sensor++;
}
4

1 回答 1

0

您可能需要考虑在循环中使用您的s = in.readLine()调用,如以下问题所示。您在这里对代码所做的只是从 BufferedReader 对象中读取一次,并且您最多将获得缓冲区的大小(8k)。如果有可用的数据,后续读取将为您提供更多数据。如果调用的结果是,则意味着没有更多数据可供读取。whilereadLine()null

于 2012-10-23T16:30:12.690 回答