0

フォルダー内の 1000 個のファイルを検討してください。今、そのフォルダー内で同じファイルを見つけたいと考えています。

バイトごとの比較で疲れましたが、完了するのに時間がかかりました。これがコードです

fs1=new BufferedInputStream(new FileInputStream(file1));
fs2=new BufferedInputStream(new FileInputStream(file2));

int b1,b2;
do
{
b1=fs1.read();
b2=fs2.read();
    if(b1!=b2)
    {
        match=false;    
        break;
    }
}while(found && b1 !=- 1);

if(match)
{
    Log.e("cyb", "Matched");
}

同じファイルを見つける他の方法はありますか?

4

1 に答える 1

3

コードを最適化するために最初にすべきことは、比較するファイルのサイズを確認することです。サイズが同じでない場合は、ファイルをメモリに読み込んでバイトごとに比較しても意味がありません。

もう1つの方法は、最初に各ファイルのCRCを計算してから、同じCRC(および同じ長さ)のファイルに対してのみ実際の比較を行うことです。これにより、同じ長さの多くの異なるファイルを処理している場合、高価なバイトごとの比較の数が大幅に制限されます。

于 2012-12-19T15:13:05.360 に答える