【发布时间】:2019-06-03 10:14:56
【问题描述】:
我有一个问题,找不到好的解决方案。我需要读取一个包含大量数据的文本文件(文件有 16MB)。该文件包含 12 列,每一列都有整数值。通常我的问题是如何在不冻结应用程序的情况下执行此操作。我的文件在我的项目的资产文件夹中,我尝试使用这样的东西:
AssetManager assetManager = this.getAssets();
try {
InputStream inputStream = assetManager.open("3333.ecg");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String str;
while ((str = bufferedReader.readLine()) != null) {
stringBuilder.append(str);
}
} catch (IOException e) {
e.printStackTrace();
}
但应用程序冻结。我的目标是从每一列中获取数据并将其保存到整数数组列表中。我正在寻找一些建议。
提前致谢。
【问题讨论】:
-
你试过在background thread?上运行代码
-
你唯一需要做的就是在主线程之外进行
-
您可以使用
AsyncTask异步读取它。你不应该在主线程中进行昂贵的操作。 -
感谢您的回答,最终我计划在单独的线程中执行此操作,但我认为我做错了其他事情,因为 16 mb 对我来说似乎没有那么大,应用程序应该更快地读取文件.