Como posso encerrar e retomar a gravação de um arquivo usando um único PrintWriter?

Primeiramente boa tarde a todos,

Estou trabalhando com um pequeno projeto que realiza a leitura dos dados de uma planilha, visando facilitar a captura das exceptions, tenho uma classe que denomina-se Gerador de Logs (classe essa que foi retirada de um dos tópicos do forúm, meus agradecimentos ao autor). Esta classe possui um objeto PrintWriter que realiza a escrita dos Throwable que capturo e armazena em um arquivo txt, esse objeto é instanciado quando inicio minha view e encerrado quando realizo o fechamento da mesma, minha intenção é saber se é possível encerrar a gravação do arquivo e retomá-la novamente utilizando o mesmo objeto em tempo de execução ? Minha intenção é disponibilizar um botão que permita a quem utiliza a aplicação ver este arquivo, porém estou meio confuso em como fazer isso já que o arquivo fica aberto para a gravação durante toda a execução da aplicação.

`/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.layoutbuilder.domain;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

/**
 *
 * @author DELL
 */
public class GeradorLog {

    private PrintWriter out;

    public GeradorLog() {
        try {

            out = new PrintWriter(new FileWriter("LogAplicativo.txt", true));

        } catch (IOException e) {

            e.printStackTrace();

        }
    }

    public void gravaErro(Throwable erro) {

        out.print("Erro ocorrido em: ");
        out.println(new Date());
        out.print("Mensagem de erro: ");
        out.println(erro);
        out.print("Stacktrace: ");
        erro.printStackTrace(out);

    }

    public void close() {

        if (out != null) {
            out.flush();
            out.close();
        }

    }
}
`

Ao inves de usar o mesmo objeto, abrir o arquivo de novo está inviável?

Vc poderia criar um Writer.

No momento que a aplicação inicia, lê o arquivo, copia no Writer e fecha o arquivo. No momento que finaliza a aplicação, obtêm a String no Writer e salva no arquivo. O Writer deve funcionar como um adapter para algum tipo de buffer, como StringBuilder, dessa forma poderá ver o que está guardado no buffer. Exemplo:

class MeuWriter extends Writer {
    StringBuilder sb;
    void write(char[] cbuf, int off, int len) {
      sb.append(cbuf, off, len);
    }
    String obterString() {
      return sb.toString();
    }
}

no GeradorLog:

MeuWriter mw;
public GeradorLog() {
        try {
            mw = new MeuWriter()
            out = new PrintWriter(mw);
        } catch (IOException e) {

No close, usado quando finaliza a aplicação:

public void close() {
    out.close();
    FileWriter fw = new FileWriter("LogAplicativo.txt", true);
    fw.write(mw.obterString());
     fw.close();
}

Use o mw.obterString(); para exibir na view

Muito grato pela resposta Diego! Utilizarei aqui.