我正在尝试在我的SD卡上读取一个文件,并填写一些额外的信息(虽然很小,比如20个字节),然后再将总信息写入我的SD卡。我正在使用FileInputStream和FileOutputStream来读取和写入数据。但是,它需要很长时间才能完成该操作。例如,读取和写入100MB文件大约需要30秒。
File file = new File(globalSelectFile);
byte[] b = new byte[20971520]; /Around 20MB
FileInputStream fin = new FileInputStream(file);
FileOutputStream fout = new FileOutputStream(new File(directory + "/"
+ actualFileName));
有没有办法改善表现?
答案 0 :(得分:1)
Sdcards很慢。除了使用更快的SD卡(即2级卡)之外,没有太多可以做的事情
除此之外,我所知道的唯一其他选项是您尝试向用户隐藏此延迟。现在很多Android设备都是双核的,所以我建议你1,尝试将你的读写操作保持在最低限度并且只在必要时进行,2,在用户执行某些操作时在单独的线程中执行它们其他。即从用户那里获取一些输入,然后在你接受更多信息时将其写入磁盘。
答案 1 :(得分:0)
对于手持设备来说,100MB是巨大的。并且期望使用具有有限资源的设备作为Android手机获得的响应时间。
虽然从代码片段中不清楚如何使用20MB字节数组,但如果使用该大小的字节数组,它可能会导致OutOfMemoryError
。如果您将其用作复制文件的缓冲区,请尝试将大小缩小到更小的值。