大文本文件加载不能在Android上运行

时间:2014-02-15 23:39:33

标签: android arraylist text-files bufferedreader assets

以下是功能代码:

public void loadTextFile(String textFileName, ArrayList<String> dictionary) 
{
AssetManager assetManager = getAssets(); //files manager
//reader = public bufferedReader
//word = public String
//dictionary = public ArrayList<String>

//load file to buffer
try {
reader = new BufferedReader(new InputStreamReader(assetManager.open(textFileName)));
} catch (IOException e1) {
e1.printStackTrace();
}
word = " "; 
//loop, save words from buffer to dictionary
while(word != null)
{
try {
  word = reader.readLine();
} catch (IOException e) {
  e.printStackTrace();
  word = null;
}
if (word != null) {
  dictionary.add(word);
}
}//end while
//buffer close
try {
reader.close();
} catch (IOException e1) {
e1.printStackTrace();
}

} //end function

如果我尝试加载小文件&lt; 1MB,它工作得很好而且速度很快。 如果文件(部分)大于1MB但小于大约3MB,则工作缓慢(4-6分钟)。 如果文件更大,它不起作用,我在模拟器中有信息: “应用程序应用程序(进程processing.test.app)已意外停止。请再试一次”。我不知道出了什么问题。 我尝试:预先分配的ArrayList,加载文件到少数ArrayList,但仍然无法正常工作。 我会很感激任何建议。

1 个答案:

答案 0 :(得分:0)

首先,word可以在文件的某处变为null,循环将退出(因为你在异常时明确地将word设置为null)。你有堆栈跟踪吗?

  1. 尝试使用AsyncTask AsyncTask
  2. 将代码移至后台进程
  3. 如果您有一个
  4. ,请在真实设备上执行
相关问题