FileOutput.java
package progen.output.outputers;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Locale;
import java.util.ResourceBundle;
import progen.context.ProGenContext;
/**
* @author jirsis
* @since 2.0
*
*/
public abstract class FileOutput implements Outputer {
/** El escritor en fichero. */
private PrintWriter writer;
/** Nombre del fichero que contiene la salida. */
private String fileName;
/** Indica si se va crear vacío o si se va a añadir más información. */
private boolean append;
/** Almacén de todos los literales de texto que aparecerán en la salida. */
private ResourceBundle literals;
/**
* Constructor que recibe como parámetro el nombre del fichero y en que modo
* se crea el fichero, si será vaciado al crearlo o se añadirán nuevas líneas.
*
* @param fileName
* El nombre del fichero.
* @param append
* <code>true</code> si se añadirán más líneas y <code>false</code>
* en caso contrario.
*/
public FileOutput(String fileName, boolean append) {
this.fileName = fileName;
this.append = append;
this.literals = ResourceBundle.getBundle("progen.output.outputers.literals", Locale.getDefault());
}
@Override
public void close() {
writer.flush();
writer.close();
}
@Override
public void init() {
try {
final StringBuilder outputDir = new StringBuilder(50);
outputDir.append(ProGenContext.getMandatoryProperty("progen.output.dir"));
outputDir.append(ProGenContext.getMandatoryProperty("progen.output.experiment"));
outputDir.append(fileName);
final File file = new File(outputDir.toString());
writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(file, append), "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
}
public PrintWriter getWriter() {
return writer;
}
public ResourceBundle getLiterals() {
return literals;
}
}