PropertiesConfiguration не перезагружается с помощью символьной ссылки

#java #symlink #apache-commons-config

#java #символическая ссылка #apache-commons-config

Вопрос:

Учитывая сценарий, в котором ‘file’ является символической ссылкой на реальную

 file -> real_file
  

если я настрою PropertiesConfiguration (из конфигурации Apache Commons) для открытия символической ссылки, она не перезагрузит ее, если я обновлю реальный файл

 String filePath = new File(path).getCanonicalPath();
PropertiesConfiguration configuration = new PropertiesConfiguration(new File(filePath));
configuration.setReloadingStrategy(new FileChangedReloadingStrategy());
  

Конечно, в этом случае дата обновления символьной ссылки не изменяется, в отличие от реальной.

Есть ли способ принудительно PropertiesConfiguration перейти по символической ссылке и распознать изменения в реальном файле?

Комментарии:

1. .getCanonicalPath() даст вам реальный путь к файлу. Итак, в вашем примере кода вы просматриваете фактический файл, а не символическую ссылку. Поэтому ему не нужно следовать символической ссылке в этом примере. Разве этот код не перезагружается при изменениях в реальном файле?

2. Да, я только что обнаружил, что проблема в том, что указанный файл был заменен другим файлом, поэтому propertieconfiguration указывает на несуществующий файл. Вот почему перезагрузка не работает

3. Понял. Затем я рекомендую написать ответ на ваш собственный вопрос, чтобы он мог быть полезен сообществу.

Ответ №1:

Проблема в том, что .getCanonicalPath() откройте указанный файл, а не символическую ссылку. Если кто-то заменит реальный файл другим PropertiecConfiguration , он по-прежнему указывает на несуществующий файл, поэтому перезагрузка не работает