0

私は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));

パフォーマンスを向上させる方法はありますか?

4

2 に答える 2

1

Sdcardは遅いです。より高速なSDカード、つまり(クラス2カード)を使用する以外に、それについてできることはあまりありません。

それとは別に、私が知っている他の唯一のオプションは、この待ち時間をユーザーから隠そうとすることです。多くのAndroidデバイスは現在デュアルコアであるため、1、読み取りと書き込みを最小限に抑え、必要な場合にのみ実行するようにし、2、ユーザーが何かをしているときに別のスレッドで実行することをお勧めしますそうしないと。つまり、ユーザーからの入力を取り込んで、さらに取り込んでいる間にディスクに書き込みます。

于 2012-06-21T15:42:19.893 に答える
0

ハンドヘルドデバイスの場合、100MBは巨大です。また、Androidスマートフォンのように、リソースが限られているデバイスで得られるような応答時間を期待してください。

OutOfMemoryErrorコードスニペットからは20MBのバイト配列をどのように使用しているかは明確ではありませんが、そのサイズのバイト配列を使用している場合は、につながる可能性があります。ファイルをコピーするためのバッファとして使用している場合は、サイズをはるかに小さい値に縮小してみてください。

于 2012-06-21T15:41:02.097 に答える