1

私は現在、Androidの問題で立ち往生しています。ループで、増加する ID ( sensor) を含む URL から読み取ります。最大値に達すると、ループが終了します (IOExceptionエラー 500 のため)。私の問題はBufferedReader. サイズ (たとえば 8k) を指定すると、8k を超えるサイズを読み取ることはできませんBufferedReaderが、ループの実行ごとに (異なる uri で) 再作成され、読み取ったすべてのファイルには 1 行しか含まれません (<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++;
}
4

1 に答える 1

0

次の質問のように、ループs = in.readLine()内で呼び出しを使用することを検討することをお勧めします。ここでコードを使用して行っているのは、BufferedReaderオブジェクトからの読み取りを1回だけで、最大でバッファーのサイズ(8k)を取得します。利用可能なデータがある場合は、その後の読み取りでより多くのデータが取得されます。呼び出しの結果がである場合、それは読み取ることができるデータがこれ以上ないことを意味します。whilereadLine()null

于 2012-10-23T16:30:12.690 に答える