Как я могу различить два разных текстовых файла без учета порядка строк? - PullRequest
4 голосов
/ 21 ноября 2010

У меня есть два файла свойств, которые содержат информацию.Я хотел бы проверить их, чтобы увидеть, являются ли они одинаковыми.Однако в файлах свойств, если вы не укажете порядок вывода, они записывают в файл в другом порядке.У меня нет доступа к коду только эти файлы.Как я могу проверить, совпадает ли их содержимое?

Например,

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

Как определить, что эти два файла будут одинаковыми?ae представляют строки информации

Спасибо!

Ответы [ 4 ]

9 голосов
/ 21 ноября 2010

Вы уже приняли ответ, но я все равно добавлю его, просто чтобы указать, что есть более простой способ (при условии, что вы говорите о обычных файлах свойств Java).

На самом деле вам не нужно выполнять любую сортировку, построчное сравнение и т. Д. Самостоятельно, потому что метод equals () в java.util.Properties реализован разумно и что можно ожидать Другими словами, « знает и использует библиотеки », как сказал бы Джошуа Блох. : -)

Вот пример. Данный файл p1.properties:

a = 1
b = 2

и p2.properties:

b = 2
a = 1

... вы можете просто прочитать их и сравнить с равными ():

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
3 голосов
/ 21 ноября 2010

Прочитайте их, рассортируйте их, затем бегите по ним рядом и сравнивайте их.Кстати, сортировку можно выполнить, вставив их в отсортированную структуру данных.

1 голос
/ 21 ноября 2010

Сортировка содержимого, а затем сравнение построчно.

0 голосов
/ 27 сентября 2011

Вы можете сделать это в командной строке.Ваши два файла: File1 и File2.

$ sort File1> sorted_File1

$ sort File2> sorted_File2

А затем используйте утилиту diff, такую ​​как meld (графическая программа diff).

$ meld sorted_File1 sorted_File2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...