2012-12-19 30 views
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"); 
} 

任何其他方法來找到相同的文件?

回答

3

您應該優化代碼的第一件事是檢查您比較的文件的大小。如果大小不一樣,那麼將文件讀入內存並逐字節比較是沒有意義的。

你可以做的另一件事是首先爲每個文件計算CRC,然後僅對具有相同CRC(和相同長度)的文件進行實際比較。如果您處理許多不同長度相同的文件,這應該大大限制您的昂貴的逐字節比較的次數。

+0

我也試過,但它也需要時間來處理大文件。 –

+0

你用什麼方法?看看這個問題的答案:http://stackoverflow.com/questions/116574/java-get-file-size-efficiently – piokuc

+0

此外,你應該確保你只獲得每個文件的大小一次(緩存它一張地圖,例如) – piokuc