以下のCSVクラスを使用する。
public interface OutputFile { public boolean output(); } import java.io.BufferedWriter; import java.io.FileWriter; import java.io.PrintWriter; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.UUID; public class Csv implements OutputFile { private String inputFile = ""; private String outputFile = getCurrentDate(); public Csv(String outputFile) { this.outputFile = outputFile; } public Csv(String inputFile, String outputFile){ this.inputFile = inputFile; this.outputFile = outputFile; } public String getOutputFile(){ return this.outputFile; } public String getInputFile(){ return this.inputFile; } @Override public boolean output() { try { FileWriter fileWriter = new FileWriter(this.outputFile, false); PrintWriter printWriter = new PrintWriter(new BufferedWriter(fileWriter)); printWriter.print("テスト"); printWriter.print(","); printWriter.print("テスト2"); printWriter.close(); return true; } catch (Exception e) { return false; } } private String getCurrentDate(){ Calendar calendar = Calendar.getInstance(); String year = String.valueOf(calendar.get(Calendar.YEAR)); String month = String.valueOf(calendar.get(Calendar.MONTH)); String date = String.valueOf(calendar.get(Calendar.DATE)); String seconds = String.valueOf(calendar.get(Calendar.SECOND)); return year + "-" + month + "-" + date + "-" + seconds + UUID.randomUUID().toString() + ".csv"; } }
次に、playframeworkのコントローラーの実装。
def get = Action { implicit request => val csv:Csv = new Csv() val csvFile:String = csv.getOutputFile() csv.output() match{ case true => { val file = new File(csvFile) Ok.sendFile(file) } case false => Ok("bad Access") } }
これでCSVファイルをダウンロードする事が出来る。