File arquivo = new File(file);
FileOutputStream output = new FileOutputstream(arquivo, anexar);//Se a variável anexar for verdadeira, a stream adicionará o conetúdo no final do arquivo; caso for falsa, o mesmo será sobrescrito
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(output));
for(List<String> linha: resposta) {
for(String elemento : linha) {
bufferedWriter.write(linha);
}
}
file.close();
output.close();
bufferedWriter.close();
}
[/code]
Com isso, você tem um método em que você pode optar por anexar o texto no fim do arquivo ou não.
O porblema 'e que linha 'e uma lista de da erro passar lista no bufferedWriter.write(linha);
At’e agora so consegui gravar linha com
PrintWriter pw = new PrintWriter(f);
pw.println(linha);
Porem utilizando PrintWriter nao consigo verificar se o arquivo ja possui informaçao para efetuar a gravaçao no final do arquivo.
Com printwriter, consigo verificar se o arquivo possui informaçao para adicionar o conetúdo no final do arquivo; caso for falsa, o mesmo será sobrescrito ou posso utilizar outro metodo que grava arquivo texto partir de informaçoes de lista ?
[code]public void escreverArquivo(String file, List<List> resposta)
throws IOException {
boolean anexar = false;
File f = new File(file);
if (f.length() != 0L)
anexar = true;
FileWriter writer = new FileWriter(new File(file), anexar);
BufferedWriter bufferedWriter = new BufferedWriter(writer);
for (List<String> linha : resposta) {
for (String elemento : linha) {
bufferedWriter.write(elemento);
}
}
writer.close();
bufferedWriter.close();
}[/code]
Perceba que eu crio uma instância de File e com o método length eu verifico se o mesmo possui algum conteúdo (length retorna o número de bytes do arquivo descrito pelo path ou 0L se o arquivo não existir). FileWriter recebe o objeto file e um boolean para dizer se o arquivo deve ou não ser anexado.
Nao esta dando certo, ao inves de abrir a pagina mostrando as informaçoes do arquivo, esta apenas dando a opcao de abrir o arquivo , mas nao esta sendo aberto automaticamente pela pagina.
Fiz um esboço do código, não cheguei a testar, fiz de cabeça:
[code]
try
{BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(pathArquivo), Charset.forName(“ISO-8859-1”)));//Caso o arquivo csv tenha outro encoding, coloque-o no lugar do encoding que eu passsei.
BufferedWriter bufferedWriter = new BufferedWriter(response.getOuputStream());
No navegador firefox ja consegui, porem no navegador chrome e IE nao esta dando certo.
No navegador firefox antes de abrir o arquivo ‘e mostrado uma caixa de mensagem solicitando se desejo salvar o arquivo ou abrir e com que tipo de programa quero abrir o arquivo que no meu caso e’ o Excel.
No navegador Chrome e IE o arquivo 'e aberto automaticamente pelo browser sem solicitar com qual software o arquivo sera aberto ou se sera salvo.
Sera alguma configuracao que preciso fazer no navegador?
Segue o codigo abaixo:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ArquivoCVS arquivoCVS = new ArquivoCVS();
List<List<String>> linha = new ArrayList<List<String>>();
List<String> coluna = new ArrayList<String>();
for(int i=0; i<2; i++){
coluna.add("teste");
}
linha.add(coluna);
arquivoCVS.escreverArquivo("/home/farzac/Server/glassfish3/glassfish/domains/domain1/applications/ProjArquivoTexto/cons_config_exec.csv", linha);
response.sendRedirect("/ProjArquivoTexto/cons_config_exec.csv");
}
Eu quero abrir o arquivo gerado, porem quero ter opção de escolher com qual programa irei abrir o arquivo csv gerado.
No IE ja esta mostrando a informação na pagina do browser porem queria abrir numa planilha excel e o IE nao mostra uma caixa com opção de abrir, salvar ou cancelar e é esta caixa de informação que preciso.
Apartir do momento que é disparado o response.sendRedirect("/ProjArquivoTexto/cons_config_exec.csv"), as informações são exibidas no browser do IE e uma caixa com as opções Abrir, Salvar e Cancelar deveria ser exibida.