Как читать локальный файл с Grails? - PullRequest
0 голосов
/ 24 декабря 2011

Когда мое приложение Grails запускается, я создаю структуру данных из файла CSV, загруженного с удаленного URL-адреса.Если файл недоступен, я бы хотел вернуться к локальной копии.В настоящее время обработка файла в слое обслуживания инициируется с помощью задания Quartz.

Какова наилучшая практика использования Groovy для чтения локального ресурса в Grails?

  • Где я могу спрятать файл?
  • Как мне безопасно и правильно прочитать файл?

Ответы общего характера будут очень приемлемыми.

1 Ответ

2 голосов
/ 24 декабря 2011

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

Итак, вы должны определить стандартизированное местоположение (например, /etc/myappname/CSVFileConfig.groovy) или передать путь к файлу конфигурации, используя переменную среды или что-то подобное. См. Внешняя конфигурация для примеров.

Затем вы можете просто добавить фактический путь к локальному файлу в эту конфигурацию экстентов, например, так:

// CSVFileConfig.groovy
my.custom.csv.path = ...

Наконец, получите доступ к нему, используя обычные операции конфигурации:

// in your Quartz job
def path = grailsApplication.config.my?.custom?.csv?.path
if(!path) {
    // no file to load
} else {
    // load file
}

Что касается чтения файла, каковы ваши основные проблемы? Если вы используете библиотеку CSV, такую ​​как OpenCSV (используется в в большинстве библиотек Grails для анализа CSV ), она будет обрабатывать открытие и анализ файла.

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

...