#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
, он по-прежнему указывает на несуществующий файл, поэтому перезагрузка не работает