web-dev-qa-db-ja.com

InputStreamをBufferedReaderに変換する

AndroidのアセットディレクトリからInputStreamを使用して、1行ずつテキストファイルを読み取ろうとしています。

ReadStream()を使用できるように、InputStreamをBufferedReaderに変換します。

私は次のコードを持っています:

InputStream is;
is = myContext.getAssets().open ("file.txt");
BufferedReader br = new BufferedReader (is);

3行目では、次のエラーがドロップされます。

この行の複数のマーカー
コンストラクターBufferedReader(InputStream)は未定義です。

私がCでやろうとしていることは次のようなものです:

StreamReader file;
file = File.OpenText ("file.txt");

line = file.ReadLine();
line = file.ReadLine();
...

私は何を間違っていますか、どのようにすればよいですか?ありがとう!

140
karse23

BufferedReaderInputStreamを直接ラップできません。別のReaderをラップします。この場合、次のようなことをしたいでしょう。

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
261
ColinD

BufferedReaderコンストラクターは、InputStreamではなく reader を引数として取ります。次のように、まずストリームからリーダーを作成する必要があります。

Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);

また、StreamReaderコンストラクターにCharsetまたは文字エンコード名を指定することもできます。ストリームはバイトを提供するだけなので、これらをテキストに変換することはエンコードが既知でなければならないことを意味します。指定しない場合、システムのデフォルトが想定されます。

22
G_H
InputStream is;
InputStreamReader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);
20
Hans