Как создать файл в текущей системе из действия контроллера Grails и сохранить данные, извлеченные из базы данных? - PullRequest
4 голосов
/ 23 июля 2011

В моем приложении Grails мне нужно создать файл в текущей системе, в котором мне нужно сохранить информацию, извлеченную из таблицы в базе данных. Как это сделать из действия контроллера? Я понятия не имею об этом.

Я создал файл как

File file=new File("file name.txt") 

file.createNewFile();

тогда я записал значения полей таблицы базы данных MySQL как:

file<<patient.id
file<<patient.name
.
.
.

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

Ответы [ 2 ]

5 голосов
/ 23 июля 2011

Не совсем точно, что вы хотите сохранить в файле, но ниже приведен пример того, как легко записать строку в файл, используя Apache-commons-io , который должен быть включен в grails

import org.apache.commons.io.FileUtils;

    class SomeController{

        def writeToFile = {

           def data = getSomeStringData();

           def fileStore = new File("./path/to/files/ControllerOutput_${new Date()}.txt");
           fileStore.createNewFile();


           FileUtils.writeStringToFile(fileStore, data);

           println("your file was created @ {fileStore.absolutePath} and is ${fileStore.length()} bytes");


        }

    }

Помогает ли это? Если нет, вам нужно точно объяснить, что вы ищете.

0 голосов
/ 24 июля 2011

Это комментарий к ответу Майкла (к сожалению, у меня до сих пор нет репутации, чтобы отвечать на ответы).

Если вы боретесь с проблемой, как указать относительный путь изнутри вашего контроллераКонтекст, это может вам помочь: Итак, если у вас есть следующая папка, из которой вы хотите читать / записывать файлы из / в "..

/myproject/web-app/temp/

, вы можете получить доступ к файлу следующим образом:

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH

// getResource references to the web-app folder as root folder
Resource resource = AH.getApplication().getParentContext().getResource("/temp/myfile.txt) 
...