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();
...
私は何を間違っていますか、どのようにすればよいですか?ありがとう!
BufferedReader
はInputStream
を直接ラップできません。別のReader
をラップします。この場合、次のようなことをしたいでしょう。
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
BufferedReaderコンストラクターは、InputStreamではなく reader を引数として取ります。次のように、まずストリームからリーダーを作成する必要があります。
Reader reader = new InputStreamReader(is);
BufferedReader br = new BufferedReader(reader);
また、StreamReaderコンストラクターにCharsetまたは文字エンコード名を指定することもできます。ストリームはバイトを提供するだけなので、これらをテキストに変換することはエンコードが既知でなければならないことを意味します。指定しない場合、システムのデフォルトが想定されます。
InputStream is;
InputStreamReader r = new InputStreamReader(is);
BufferedReader br = new BufferedReader(r);