Servlet nao exclui arquivo[Resolvido]

3 respostas
RicardoYukito

Mesmo com permissao total na pasta , o servlet nao exclui o arquivo danfes.pdf.

File file = new File(cnpjEmpresa+"/danfes.pdf");
				File xmls  = new File(cnpjEmpresa);
				File[] files  = xmls.listFiles();
				OutputStream outPdf = new FileOutputStream(file);				
				List<JasperPrint> jasperList  = new ArrayList<JasperPrint>();
				for (int i = 0 ; i  < files.length ; i ++){				
            		            JasperPrint danfe = null;
		   	           if(files[i].getName().contains(".XML")||files[i].getName().contains(".xml")){     
                                         danfe =  new PreDanfeReport().retornarRelatorio(Ambiente.H, null, files[i] , 100);			 
					 jasperList.add(danfe);
					 files[i].delete();
                                   }
				 }
				JRPdfExporter exporter = new JRPdfExporter();  
				exporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperList); 
				exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, outPdf);  
				exporter.exportReport();  

				 byte[] fileBArray = new byte[(int)file.length()];
				 FileInputStream fis = new FileInputStream(file);
				 fis.read(fileBArray);
				 
				 OutputStream rout  = response.getOutputStream();
			     response.setContentType("application/pdf");
				 response.setContentLength(fileBArray.length);
				 rout.write(fileBArray);
				 session.invalidate();
				 
				 file.delete();
				 xmls.delete();
			
				 
				 fis =null;
				 file = null;
				 fileBArray = null;
				 System.gc();
           
				 rout.flush();
				 rout.close();

O arquivo danfes.pdf fica preso na JVM, se eu uso um exitonclose() por exemplo , ao parar o servidor ele e excluido.

Atenciosamente

3 Respostas

jyoshiriro

Tente fazer os

rout.flush(); rout.close();
Antes de excluir o arquivo.

jyoshiriro

Ah, e tente fechar também seus outPdf e fis.

RicardoYukito

realmente, foi so fechar o outPdf, passei despercebido por ele.
Muito obrigado.

Criado 23 de março de 2012
Ultima resposta 23 de mar. de 2012
Respostas 3
Participantes 2