segunda-feira, 12 de novembro de 2012

Criação de Arquivos em Memória

Outro dia, estava com um problema para criar arquivos em Java.

Claro, muita gente vai dizer usar o File f = new File("nomeArquivo.extencao")

Mas meu problema era que eu precisa jogar para o Servlet para então o usuário salva-lo em sua máquina, fazendo da maneira anterior, um arquivo (lixo) seria criado no Server, que não ajudaria em nada para mim. 

Então nas minhas buscas encontrei uma solução usando classes do pacote java.io.* ByteArrayOutputStream, OutputStreamWriter, BufferedWriter

Segue abaixo solução:

            ...

            ByteArrayOutputStream out = new ByteArrayOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(out);
            BufferedWriter bw = new BufferedWriter(osw);
            
            bw.write( "Escrevendo no arquivo");
            bw.close;

            ...


Despois disso, vc deve seguir os demais passos, se usar servlet ficaria assim:

          HttpServletResponse response = (HttpServletResponse)   FacesContext.getCurrentInstance().getExternalContext().getResponse();

        ServletOutputStream output;

        ...     
  
        //colocar código anterior

        ...
        output = response.getOutputStream();
        response.setContentType("application/x-download");
        response.setHeader("Content-Disposition", "attachment; filename=arquivo.extensao");
           
            output.write(out.toByteArray());
           
            output.flush();
            output.close();


Nenhum comentário:

Postar um comentário