gpt4 book ai didi

java - 如何在 Android 应用程序的外部类中使用 Java 加载此文本文件?

转载 作者:行者123 更新时间:2023-12-01 14:19:08 25 4
gpt4 key购买 nike

我有一个文本文件,其中包含由换行符分隔的 173,139 个单词。基本上,我需要将这个 1.7mb 文件加载到字符串数组中,以便于访问。我试图在主 Activity 的 onCreate() 中执行此操作,这可能会导致其自身的问题,因为它可能会使应用程序的启动速度非常慢,但现在我只是尝试加载我想在字典里。

我查了一下问题,发现我应该使用 Assets 管理器来解决这个问题,所以这是我的 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();
}
}

我在我的主要 Activity 中实例化了一个字典,几乎在类的第一行:

public class MainActivity extends Activity {
Dictionary dictionary = new Dictionary(this);
//rest of application code
}

我在这里做错了什么?我也尝试过像这样实例化字典:

字典dictionary = new Dictionary(this.getApplicationContext());

以及:

字典dictionary = new Dictionary(getApplicationContext());

但所有这些似乎都会在我的应用程序中导致 fatal error 。

最后两个问题:可以像这样在应用程序代码的开头实例化吗?如果是这样,为什么当我尝试这样做时该代码不起作用?

编辑:我被要求提供 logcat 输出。抱歉,这是我的第一个“真正的”Android 程序。我不知道这是否正是您正在寻找的内容,但我也不想省略任何可能有帮助的内容:

http://pastebin.com/raw.php?i=c99LFZzx

最佳答案

只是一个想法:您的 context.getAssets 调用会抛出 NPE(可能是因为 context 为 null)。

我认为这是因为您实际上没有将 Dictionary Dictionary = new Dictionary(this); 放入 onCreate 方法中。

如果您将该代码放在 super.onCreate(bundle) 之后的 onCreate 上,我希望它能够工作(前提是该文件在那里)。

如果您担心应用程序初始化加载时间,我建议您使用AsyncTask在启动 Activity 中加载您的字典,以便您可以提供用户反馈。

关于java - 如何在 Android 应用程序的外部类中使用 Java 加载此文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17794391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com