Java 从16MB文件读取数据而不冻结应用程序的最佳方法
我有个问题,找不到好的解决办法。我需要读取一个包含大量数据的文本文件(文件有16MB)。该文件包含12列,每列中包含整数值。一般来说,我的问题是如何做到这一点而不冻结应用程序。我的文件位于项目的资产文件夹中,我尝试使用以下内容:Java 从16MB文件读取数据而不冻结应用程序的最佳方法,java,android,Java,Android,我有个问题,找不到好的解决办法。我需要读取一个包含大量数据的文本文件(文件有16MB)。该文件包含12列,每列中包含整数值。一般来说,我的问题是如何做到这一点而不冻结应用程序。我的文件位于项目的资产文件夹中,我尝试使用以下内容: AssetManager assetManager = this.getAssets(); try { InputStream inputStream = assetManager.open("3333.ecg"); BufferedReader buf
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();
}
但应用程序冻结了。我的目标是从每列中获取数据,并将其保存到整数数组列表中。我在寻求一些建议
提前感谢。使用此选项在后台运行:
AsyncTask.execute(new Runnable() {
@Override
public void run() {
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();
}
}
});
您是否尝试过在主机上运行代码?您唯一需要的是在主线程之外运行代码。您可以使用
AsyncTask
异步读取它。你永远不应该在主线程中进行昂贵的操作。感谢你的回答,最终我计划在单独的线程中进行操作,但我认为我做了一些错误的事情,因为16MB对我来说似乎没有那么大,应用程序应该更快地读取文件。