java - 循环中的 BufferedReader

标签 java android bufferedreader

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

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

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++;
}

最佳答案

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

关于java - 循环中的 BufferedReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13034003/

相关文章:

android - 如何绘制动态图?

android - Jetpack Compose 中的 TextClock 等价物是什么?

android - 无法在 Eclipse 中连接 Samsung Galaxy S3 Mini

java - 为什么这个基本的客户端-服务器程序不传递数据?

java - 如何调整 JScrollPane 中绑定(bind)的 JTextPane 组件的大小

java - 数组程序

java - 阅读文本文件后如何打印完整句子?

Java Bufferedwriter 到可公开访问的位置

java - 在 Java 接口(interface)中重新定义等待方法

Java编辑xml文件(保存属性顺序)