2

現在、大きなファイル (>14MB) を Android アプリに読み込もうとしています。現在使用しているコードは次のとおりです。

AssetManager manager = context.getAssets();
InputStream stream = manager.open(Filename);
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
Scontent = br.readLine();  //I just load one big line that is bigger than 14 MB

しかし、〜 14MB の割り当てでメモリ不足の例外が発生します。アプリの最大サイズは 16 MB (デバイスによって異なります) と書かれていますが、それほど多くのデータを読み込む良い方法が見つかりません。

このような大きなファイルをロードする最も簡単なソリューションは何でしょうか?

4

3 に答える 3

1

大きなファイルを使用する代わりに、複数の小さなファイル (~1MB) を使用します。一度にすべてのデータを読み取る必要がある場合は、それらを順番に読み取ります

于 2013-05-26T12:32:35.823 に答える
0

char ごとに char を読み取ることができますが、この小さなブロックを使用した後に割り当てが参照を削除することに注意してください。そのため、Garbage Cleaner はそのメモリを返すことができます。

于 2013-05-26T12:35:44.993 に答える
0

このInputStreamReaderクラスでは、ファイルをバイト単位で読み取ることができます。そのクラスは既に使用していますが、BufferedReaderクラスに埋め込んでいます。そのため、大きなファイルを破棄してBufferedReader、自分でバイト単位で読み取ります。それを行い、バイトを処理する場合、1 回の操作でファイル全体を読み取る必要はありません。

于 2013-05-26T12:33:59.823 に答える