2010-11-21 3 views
4

私は情報を含む2つのプロパティファイルを持っています。私は彼らが同じかどうか見るためにそれらをdiffしたいと思います。ただし、プロパティファイルでは、出力する順序を指定しないかぎり、別の順序でファイルに書き込みます。私はこれらのファイルだけのコードにアクセスすることはできません。その内容が同じかどうかをどうやって確認できますか?例えば行順序を考慮せずに2つの異なるテキストファイルをどのように比較できますか?

File1 File2 
a  e 
b  c 
c  a 
d  d 
e  b 

どのように私はこれらの2つのファイルが同じになることを検出することができますか? a-eは情報の文字列を表します

ありがとう!

答えて

9

あなたはすでに回答を受け入れていますが、これはとにかく簡単な方法があることを指摘するために追加します(普通のJavaプロパティファイルについて話していると仮定します)。 java.util.Properties内のequals()は1が期待するものをスマートに実装していされているので、

あなたは実際、など任意の並べ替え、行ごとの比較を自分で行う必要はありません。言い換えれば、 "know and use the libraries"、ジョシュア・ブロッホが言うように。 :-)

ここでは例を示します。

a = 1 
b = 2 

p2.properties

b = 2 
a = 1 

...あなただけでそれらを読んで、等号(とそれらを比較することができます):ファイルp1.properties考える

Properties props1 = new Properties(); 
props1.load(new FileReader("p1.properties"));  
Properties props2 = new Properties(); 
props2.load(new FileReader("p2.properties")); 

System.out.println(props1.equals(props2)); // true 
+1

をメルドまた、この方法では、フォーマットの違い(X = "AA" x対= AA)があるとして、コメントと空白行は、無視されることを保証します。 –

+1

+1 - これは私より優れた答えです(私はJavaの代わりにC++で書いているので、一般的な観点から答えていました) –

1

内容を並べ替えて1行ずつ比較します。

3

これらを読み込んで並べ替え、それらを並べて比較して比較します。偶然にソートされたデータ構造にソートを挿入することによって、ソートを行うことができます。

-1

あなたはその上で行うことができますコマンドライン。あなたの2つのファイルはFile1とFile2です。その後、

$ソートはFile1> sorted_File1

$ソートFile2の> sorted_File2

そして(グラフィカルなdiffプログラムである)メルドのような差分ユーティリティを使用します。

$ sorted_File1 sorted_File2

関連する問題