2015-04-21 1 views
0

Я читаю файлы свойств на Java, которые имеют как ключи, так и значения, которые содержат одну или несколько обратных косых черт. Примеры:Прочитать и сравнить файл свойств, содержащий обратную косую черту в обоих ключах и значениях

xyz\ \ \ \ val.action.do_something\= {show} {first} &nbsp; {last} </a> 

filepath=C:\folder1\folder2 

i\have\backslash=the\value 

i\\also\have\backslash=value 

Я знаю, что properties.load удаляет обратную косую черту с обеих сторон. Как сохранить его с обеих сторон, даже когда я сравниваю значения для данного ключа из двух разных файлов свойств?

Основное предназначение - сравнить 2 таких файла свойств. При сравнении это должно сравниваться дословно с каждым символом, а также должно печататься аналогично.

+1

Возможно, вам следует привести пример того, какого результата вы ожидаете, чтобы улучшить вопрос. – Rias

+0

Почему? Обратные косые черты имеют определенное значение, которое находится в курсе 'java.util.Properties.', если вы не используете их для этой цели, вы делаете это неправильно. Если вы просто хотите сравнить исходные файлы, не используйте 'Properties.' – EJP

+0

Я сравниваю файлы свойств, а не сырые файлы. Файлы действительно являются файлами свойств. Однако в файле свойств есть записи, которые позволяют возвращать косые черты и все специальные символы в любой последовательности в обоих ключах и значениях. – naspras

ответ

0

Помещение обратной косой черты в ключах - это что-то странное и очень плохая идея, на мой взгляд. Я не уверен, что это разрешено спецификациями файлов свойств.

В любом случае, вам нужно, чтобы избежать ваши обратные слэши и другие специальные символы (такие как '=' или ':' ...) так

filepath=C:\folder1\folder2 

должны стать

filepath=C\:\\folder1\\folder2 

Посмотрите at java.util.Properties javadoc.

+0

Спасибо! Это понятно. Однако давайте предположим этот случай здесь. Предположим, что файл свойств A имеет запись как * this.key = строка, за которой следует новая строка \ n *, а файл свойств B имеет ее как * this.key = строка, за которой следует новая строка *. При сравнении он сообщает разницу, но обрабатывает «\ n», а не показывает символы. Как сохранить символы при сравнении или печати? – naspras

+0

Я не совсем понимаю, что вы хотите. Если вы хотите иметь новый символ линии в своем значении, вам также необходимо его избежать. Ex 'my.value = значение с новой строкой \ n'. Если вы хотите сохранить последовательность «\ n», вам нужно избежать обратного слэша: 'my.value = экранированная новая строка \\ n' –

+0

См. Http://stackoverflow.com/questions/10285551/newline-char- в-Java-свойства-файл стоимость –

Смежные вопросы