Eu quero saber se tem como eu gerar um arquivo de texto e enviá-lo pela response sem precisar salvá-lo em disco.
O único modo que eu consegui fazer foi:
List<LinhasArquivoTexto> linhas = new ArrayList<LinhasArquivoTexto>();PrintWriterwriter=newPrintWriter(newBufferedWriter(newFileWriter("arquivo.txt")));for(LinhasArquivoTextol:linhas)writer.print(l.gerarLinha());writer.flush();writer.close();response.setContentType("application/plain");response.setHeader("Content-Disposition","attachment; filename=arquivo.txt");Filearquivo=newFile("arquivo.txt");FileInputStreamreader=newFileInputStream(arquivo);byte[]b=newbyte[(int)arquivo.length()];reader.read(b);OutputStreamsaida=response.getOutputStream();saida.write(b);saida.flush();reader.close();
Mas de onde vem esse arquivo ?
Qual o tamanho dele ?
X
xandevieira
Esse metodo eu coloquei numa classe utilitaria,
eu utilizo struts, na minha action eu montei o arquivo utilizando StringBuffer
G
Gobain
Eu to gerando um arquivo de texto q será importado para um outro sistema tosco e véio lá de outra empresa.
É baseado em algumas informações q vem de um relatório que fica com um nº N de linhas.
Então eu vou gerar o arquivo a partir de um relatório, ele não existe previamente.
Vou testar teu método avsouza … já digo se funcionou!
G
Gobain
Funcionou quase 100%…
O arquivo vem perfeitamente como eu queria, mas da um erro
Mesma coisa :?
Eu achei umas discussões sobre esse erro falando q pode ser relacionado ao ContentType por ocorrerem várias declarações dele (na página e depois na Action) mas mesmo tirando da página o erro continua…
X
xandevieira
vou dizer o q tenho.
uma jsp, onde tem a opção para o usuario baixar o arquivo. nela tem um submit para uma action
um action (struts) nela eu crio meu stringBuffer e envio para
this.sendStringWithName(arvivoStringBuffer,“nome Arquivo”,response);
retunr null;
G
Gobain
Tá do mesmo jeito q o teu esquema aí, mas no meu da erro =D
Sei lá… vo continuar procurando a causa e a solução… qd encontrar eu posto aqui.
Vlw pela ajuda!