2017-10-18 15 views
-4

同じサイズのファイルが2つあり、md5コードも同じです。ファイルは大きいです。私はJavaでのファイル操作に精通していません。 2つのファイルのバイトを比較するにはどうすればよいですか?入力は2つのファイルパスで、それらが同じかどうかを示すブール値を出力します。2つのファイルをJavaで1バイトずつ比較する

+0

ドキュメントを参照してください。チュートリアルをオンラインで読む。 windowsの –

+0

は 'fc'コマンドを使います。 Linuxでは 'cmp'コマンドを使用しています(私は思っています)。しかし、それがうまくいくならば、この質問は話題にならない(プログラミング関連ではない)、そしてプログラミング課題を書いているならば、これは広すぎる。 –

+3

私は "ファイルのバイトをバイトのJavaと比較する"と尋ねました:https://stackoverflow.com/questions/29503335/how-to-compare-byte-to-byte-in-java-using-fileinputstream投稿する前に研究をしてください。 –

答えて

0

Apache Commons IOにはFileUtils.contentEqualsというメソッドがあります。 APIはhereです。

byte[] f1 = Files.readAllBytes(file1); 
byte[] f2 = Files.readAllBytes(file2); 
boolean equalFiles = Arrays.equals(file1, file2); 

ファイルを言ったので:あなたはあなただけのバイト配列にファイルを読み込み、それらを比較でき、私たち外部の何にもしたくない場合は、しかし

File file1 = new File("$Path1"); 
File file2 = new File("$Path2"); 
boolean equalFiles = FileUtils.contentEquals(file1, file2); 

ような何かを行うことができますが大きい場合は、配列の代わりにBufferedInputStreamを使用し、ファイルを1つずつ読み取る必要があります。この方法はhereで説明されています。

Source.

1

あなたは、Apache Commonsの中のfileutilsクラスを見てしたい場合があります。彼らには、あなたがしたいことをしているような方法FileUtils.contentEqualsがあります。

は、Apacheのドキュメントへのリンクはここに役立ちますapache FileUtils docs

希望を見つけることができます

Path firstFilePath = Paths.get("<Path-To-Your-First-File>"); 
Path secondFilePath = Paths.get("<Path-To-Your-Second-File>"); 

try { 
    boolean isEqual = FileUtils.contentEquals(firstFilePath.toFile(), secondFilePath.toFile()); 
    if(isEqual) { 
     //do business logic 
    } 
} catch (IOException e) { 
    //handle exception 
} 

のようなものを試してみてください。

関連する問題