package basics.filesystem.file;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.Writer;

public class FilePrinter
{
// static Logger logger = Logger.getLogger(FilePrinter.class);
private String fileName;

public FilePrinter(String file)
{
   this(file, false);
}

public FilePrinter(File file)
{
   this(file, false);
}

public FilePrinter(File file, boolean append)
{
   this(file.getAbsolutePath(), append);
}

public FilePrinter(String file, boolean append)
{
   this.fileName = file;
   if(!append)
   {
      try
      {
         File f = new File(file);
         if(f.exists())
            f.delete();
      }
      catch(Exception e)
      {
         // logger.error(e.getMessage());
      }
   }
}

public boolean write(String buffer)
{
   PrintWriter filewriter = null;
   try
   {
      OutputStream outstream = new FileOutputStream(new File(fileName), true);
      Writer w = new OutputStreamWriter(outstream, "UTF-8");
      filewriter = new PrintWriter(w);
      filewriter.println(buffer);
      filewriter.flush();
      filewriter.close();
      return true;
   }
   catch(Exception e)
   {
      filewriter.close();
      return false;
   }
}

public static boolean append(String fileName, String buffer)
{
   PrintWriter filewriter = null;
   try
   {
      OutputStream outstream = new FileOutputStream(new File(fileName), true);
      Writer w = new OutputStreamWriter(outstream, "UTF-8");
      filewriter = new PrintWriter(w);
      filewriter.println(buffer);
      filewriter.flush();
      filewriter.close();
      return true;
   }
   catch(Exception e)
   {
      filewriter.close();
      return false;
   }
}

public static boolean overwrite(String fileName, String buffer)
{
   try
   {
      File f = new File(fileName);
      if(f.exists())
         f.delete();
   }
   catch(Exception e)
   {
      // logger.error(e.getMessage());
   }
   return append(fileName, buffer);
}
}
