我有一個文本文件,其中有173,139個單詞由換行符分隔。基本上,我需要將這個1.7mb文件加載到一個字符串數組中,以便於訪問。我試圖在主要活動onCreate()
中這樣做,這可能會導致它自己的問題,因爲它可能使啓動應用程序真的很慢,但現在我只是試圖加載字典中,我想。如何在外部類中的Android應用程序中使用Java加載此文本文件?
我擡頭的問題,我發現我應該使用資產管理公司對於這個問題,所以這是我在我的字典類:
public class Dictionary {
private String[] dictionary = new String[173139];
private String[] acceptedWordsList = new String[173139];
private String acceptedWords = "";
public Dictionary(Context context){
AssetManager am = context.getAssets();
try {
String rawText;
int element = 0;
InputStream is = am.open("words.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
while((rawText=reader.readLine()) != null){
dictionary[element++] = rawText;
}
} catch (IOException e) {
e.printStackTrace();
}
}
,我在實例化一個字典在我的主要活動幾乎是班上的第一行:
public class MainActivity extends Activity {
Dictionary dictionary = new Dictionary(this);
//rest of application code
}
我在做什麼錯在這裏?我也嘗試實例化一個解釋是這樣的:
Dictionary dictionary = new Dictionary(this.getApplicationContext());
還有:
Dictionary dictionary = new Dictionary(getApplicationContext());
,但所有的這些似乎在我的應用程序導致的致命錯誤。
所以最後有兩個問題:在應用程序代碼的開始時是否可以實例化呢?如果是這樣,爲什麼當我試圖這樣做時,這些代碼不工作?
編輯:我被要求提供logcat輸出。我的歉意,這是我第一個「真正的」android程序。我不知道這是不是你在尋找什麼,但我不想遺漏任何可能會有所幫助之一:
http://pastebin.com/raw.php?i=c99LFZzx
'Logcat output'? – Vikram
你的'onCreate()'代碼在哪裏? – Nima
正好在字典的實例化之下。我被告知我應該把它放在onCreate()?現在就去嘗試一下。我唯一的擔心是我需要在主類的另一個方法中訪問字典,我不想實例化它兩次......嗯。 – Arnav