我有一个由换行符分隔的 173,139 个单词的文本文件。基本上,我需要将这个 1.7mb 的文件加载到一个字符串数组中,以便于访问。我正在尝试在onCreate()
主要活动中执行此操作,这可能会导致其自身的问题,因为它可能会使启动应用程序非常慢,但我想现在我只是想在字典中加载。
我查找了这个问题,发现我应该使用资产管理器来解决这个问题,所以这是我的 Dictionary 类中的内容:
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 输出。抱歉,这是我的第一个“真正的”安卓程序。我不知道这是否正是您正在寻找的,但我也不想省略任何可能有帮助的内容: