【问题标题】:Large text files load not working on android [duplicate]大型文本文件加载在android上不起作用[重复]
【发布时间】:2014-02-15 23:39:33
【问题描述】:

函数代码如下:

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

如果我尝试加载

【问题讨论】:

  • 可以,但是问题没有解决
  • 首先,这不能成为您创建重复问题的借口。其次,当您使用 Traceview 来确定您将时间花在哪里时(正如我在对您最初问题的评论中所建议的那样),您学到了什么?

标签: android arraylist text-files bufferedreader assets


【解决方案1】:

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

  1. 尝试使用 AsyncTask 将代码移动到后台进程AsyncTask
  2. 如果有的话,在真机上执行

【讨论】:

  • word = reader.readLine();停在文件中间。我不知道我能得到什么堆栈跟踪,我是 android 新手。可能是模拟器或设备上的内存太小?我在真实设备上执行应用程序,但它没有启动。我在考虑 AsyncTask,它真的有用吗?
  • 这是不久前的事了,但是 1) 当您连接手机并通过 eclipse 启动应用程序时检查 logcat 是否有错误消息;2) 您可以在模拟器中设置内存大小。
猜你喜欢
  • 2013-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2018-01-18
  • 2020-09-25
  • 2021-09-04
相关资源
最近更新 更多