Свойства Java, получение пути к файлу - PullRequest
6 голосов
/ 21 февраля 2012
logpath = LoggerUtils.getProperties().getProperty("log.path");
System.out.println("logpath: " + logpath);

Приведенный выше код возвращает:

logpath: C:UsersMauriceDesktopLogs

В файле свойств:

log.path    C:\Users\Maurice\Desktop\Logs

Как сохранить разделители файлов?Я хочу, чтобы это работало и в Linux, а не только в Windows.

Ответы [ 5 ]

14 голосов
/ 21 февраля 2012

На самом деле, вам нужно поместить это в файл свойств:

log.path    C:\\Users\\Maurice\\Desktop\\Logs

Смотрите это:

точнее load метод:

Прокрутите немного вниз, и вы увидите это среди прочего:

Метод не обрабатывает символ обратной косой черты \ перед недопустимым escape-символом как ошибку; обратный слеш тихо сбрасывается. Например, в строке Java последовательность «\ z» может вызвать ошибку времени компиляции. Напротив, этот метод беззвучно сбрасывает обратную косую черту. Поэтому этот метод обрабатывает двухсимвольную последовательность "\ b" как эквивалентную одному символу "b".

Обратная косая черта \ - это escape-символ, который в противном случае отбрасывается без предупреждения.

4 голосов
/ 21 февраля 2012

В файле свойств вам необходимо использовать косую черту:

C:/Users/Maurice/Desktop/Logs

Или, избежавшие обратной косой черты:

C:\\Users\\Maurice\\Desktop\\Logs
3 голосов
/ 21 февраля 2012

Вам необходимо избегать слешей, поскольку они являются специальными символами. См .: Обратная косая черта Java Properties

2 голосов
/ 21 февраля 2012

Формат файла свойств Java требует, чтобы символ обратной косой черты ("\") экранировал символ, следующий за ним, поэтому для получения буквального пути к Windows вы должны иметь:

logpath: C:\\Users\\Maurice\\Desktop\\Logs

Однако Java автоматически преобразует символы разделителя пути в соответствии с платформой времени выполнения, поэтому вы можете избежать этой неприятности, всегда используя прямые косые черты:

logpath: C:/Users/Maurice/Desktop/Logs
0 голосов
/ 21 февраля 2012

Вы можете сохранить Properties в файл сначала , а затем загрузить его снова для использования.Properties позаботится о том, чтобы избежать / убежать от чего-либо.

...