0

我正在尝试读取我的 sdcard 上的一个文件并填充一些额外的信息(虽然非常小,比如 20 个字节)并将总信息再次写入我的 sdcard。我正在使用 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));

有没有办法提高性能?

4

2 回答 2

1

SD卡很慢。除了使用更快的 sd 卡(即 2 类卡)之外,没有什么可以做的

除此之外,我知道的唯一其他选择是您尝试向用户隐藏这种延迟。现在许多 Android 设备都是双核的,所以我建议你 1,尽量减少读写操作,只在必要时进行,2,当用户正在做某事时,在单独的线程中执行它们别的。即从用户那里获取一些输入,在你接受更多输入的同时将其写入磁盘。

于 2012-06-21T15:42:19.893 回答
0

100MB 对于手持设备来说是巨大的。并期待您使用资源有限的设备(如 Android 手机)所获得的响应时间。

虽然从代码片段中不太清楚您是如何使用 20MB 字节数组的,但OutOfMemoryError如果您使用的是该大小的字节数组,它可能会导致错误。如果您将其用作复制文件的缓冲区,请尝试将大小减小到更小的值。

于 2012-06-21T15:41:02.097 回答