質問: ### 前提・実現したいこと Android Studioで、テキストファイルを読み込む動作をするアプリケーションを作りたいと考えています。 こちらのサイトを参考にして、(プロジェクト名)/app/src/main/assetsフォルダの中にテキストファイルを格納し、そのテキストファイルを読み込むアプリケーションを作りました。テキストデータの容量が少ないテキストファイルであれば、無事に読み込むことができました。 ### 発生している問題・エラーメッセージ しかし、私は20000KB以上もの大きな容量のテキストファイルを読み込みたいと考えておりまして、そのようなテキストファイルを読み込もうとしたら、反応しないままアプリケーションが固まってしまいます。そして、 ``` (アプリケーション名)isn't responding ``` と表示されます。そこで選択肢の「Wait」を押しても、また固まった状態になってしまいます。 テキストファイルをダブルクリックするとその中身がAndroid Studio上で見ることができるのですが、この大きな容量のテキストファイルの場合、 ``` File C:/(~プロジェクトまでのパス)/app/src/main/assets/(テキストファイル) is too large ``` と表示され、見ることができなくなっています。 そこで、容量の大きなテキストファイルでも読み込むことのできるような方法について、何かアドバイスなどをいただけたらと思います。 よろしくお願いします。
回答: テキストファイルは辞書だという事なので、辞書(Dictionary)オブジェクトにテキストファイルの内容を入れるのが適切ではないかと思います。 ファイルを読み込んで辞書オブジェクトを作るまでのコードは以下のような感じ ``` jisho = dictionary(); //辞書の変数を作る is = this.getAssets().open(テキストファイル); br = new BufferedReader(new InputStreamReader(is)); // 1行ずつ読み込み、改行を付加する String str; while ((str = br.readLine()) != null) { separatorPos = str.indexof(":"); // 見出し語(単語)と意味が、コロンで区切られていると仮定。(必要に応じて、: を実際に使われている区切りに変更してください) jisho.put(str.substring(1,separatorPos-1),str.substring(separatorPos+1)); // 見出し語と意味のペアを辞書に追加。 } ``` この辞書を使って、assetという語の意味を表示するコードは以下のようになります。 (テキストファイルにassetのデータが入っていることを前提) ``` String result; result = jisho.get("asset"); // 変数resultに、assetの意味が入る ``` dictionaryクラスの詳しい説明は、java.util.Dictionaryクラスを参照してください。