2010-11-21 23 views
4

J'ai deux fichiers de propriétés qui contiennent des informations. Je voudrais les différencier pour voir s'ils sont identiques. Cependant, dans les fichiers de propriétés, sauf si vous spécifiez un ordre de sortie, ils écrivent dans un fichier dans un ordre différent. Je n'ai pas accès au code seulement ces fichiers. Comment puis-je vérifier si leur contenu est le même?Comment puis-je comparer deux fichiers texte différents sans tenir compte de l'ordre des lignes?

Par exemple,

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

Comment puis-je détecter que ces deux fichiers seraient les mêmes? a-e représentent des chaînes d'information

Merci!

Répondre

9

Vous avez déjà accepté une réponse, mais je vais ajouter cela de toute façon, juste pour souligner qu'il existe un moyen plus simple (en supposant que vous parlez de fichiers de propriétés Java normales).

Vous n'êtes pas vraiment faire aucun tri, comparaison ligne par ligne, etc. vous, parce equals() dans java.util.Properties a été mis en œuvre intelligemment et fait ce que l'on pourrait s'y attendre. En d'autres termes, "know and use the libraries", comme dirait Joshua Bloch. :-)

Voici un exemple. fichier donné p1.properties:

a = 1 
b = 2 

et p2.properties:

b = 2 
a = 1 

... vous pouvez simplement les lire et de les comparer avec equals():

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

En outre, cette méthode garantit que les commentaires et les lignes vides sont ignorées, tout comme les différences de mise en forme (x = aa par rapport x = "aa"). –

+1

+1 - c'est une meilleure réponse que la mienne (je répondais d'un point de vue générique, car j'écris en C++ plutôt que Java au jour le jour pour le moment) –

1

Triez le contenu et comparez ligne par ligne.

3

Lisez-les, triez-les, puis passez-les à côté les uns des autres et comparez-les. Le tri pourrait être accompli en les insérant dans une structure de données triée, incidemment.

-1

Vous pouvez le faire sur la ligne de commande. Vos deux fichiers sont File1 et File2.

$ sort Fichier1> sorted_File1

$ sort Fichier2> sorted_File2

Et puis utiliser un utilitaire diff comme meld (ce qui est le programme diff graphique).

$ meld sorted_File1 sorted_File2