Compactar arquivo

4 respostas
F

pessoal estou com esse codigo aqui para compactar um arquivo esta funcionando blz mas quando eu tento zipar somente o arquivo sem seus diretorio me retorna o seguinte erro!

/pg_ci/compacta.jsp:36: cannot resolve symbol
symbol  : method isDirectory ()
location: class java.io.FileInputStream
	  	if(!in.isDirectory())
                      ^
1 error

segue meu código

String endercoExport = "/usr/java/resin-3.0.14/webapps/intranet-pmerechim/msgExport/";
	String codigoUser =  request.getParameter("USERCODIGO");
	//compactando arquivo
	String arqOriginal = endercoExport+codigoUser+".CSV";
	String arqZip = codigoUser+".zip";
	
	String arquivo = arqOriginal;
    
    // Cria um buffer para ler os dados do arquivo
    byte[] buf = new byte[1024];
    
    try{
      // Cria o arquivo zip
      String compac = arqZip;
	  
	  
	  int bytesRead;

      ZipOutputStream saidaZip = new ZipOutputStream(new FileOutputStream(compac));
    
      // Comprime o arquivo
      FileInputStream in = new FileInputStream(arquivo);
    
      // Adiciona o arquivo ao fluxo de saída
      saidaZip.putNextEntry(new ZipEntry(arquivo));
    
      // transfere dados do arquivo para o arquivo zip
      int len;
      while((len = in.read(buf)) > 0){

//O ERRO OCORRE NESTE TRECHO
	  	if(!in.isDirectory()) 
			continue;
//O ERRO OCORRE NESTA TRECHO
        saidaZip.write(buf, 0, len);
      }
	// Finaliza a entrada
      saidaZip.closeEntry();
      in.close();
    
      // Completa o arquivo zip
      saidaZip.close();
    }
    catch(IOException e){
      // possíveis erros aqui
    }

abraço!

4 Respostas

T

isDirectory é um método da classe java.io.File, não java.io.FileInputStream.

F

cara não me dou muito bem em mexer manipular arquivo como teria que ficar então?

T

Para saber se algo cujo nome é “c:\temp\teste.txt” é um diretório, use:

File f = new File ("c:\\temp\\teste.txt");
if (f.isDirectory())
...

Note que “new File” não cria um novo arquivo.

F

Thingol consegui fazer o teste, mas o meu objetivo não vou atingido pois ainda esta compactando com os diretorios.

ja teve algum problema parecido?

segue código

String endercoExport = "/usr/java/resin-3.0.14/webapps/intranet-pmerechim/msgExport/";
	String codigoUser =  request.getParameter("USERCODIGO");
	//compactando arquivo
	String arqOriginal = endercoExport+codigoUser+".CSV";
	String arqZip = endercoExport+codigoUser+".zip";
	
	// Cria um buffer para ler os dados do arquivo
	byte[] buf = new byte[1024];
	
	try{
		int bytesRead;
		
		ZipOutputStream saidaZip = new ZipOutputStream(new FileOutputStream(arqZip));
		
		// Comprime o arquivo
		FileInputStream in = new FileInputStream(arqOriginal);
		
		// Adiciona o arquivo ao fluxo de saída
		saidaZip.putNextEntry(new ZipEntry(arqOriginal));
		
		try{
			
			File f = new File(arqOriginal);  
			if (f.isFile()) { 
				// transfere dados do arquivo para o arquivo zip
				int len;
				//zipando arquivo
				 while((len = in.read(buf)) > 0){
					saidaZip.write(buf, 0, len);
					
				} 
				out.print("Arquivo Zipado");
			}
		} catch (Exception ex) {  
			//erro
		}  
		
		// Finaliza a entrada
		saidaZip.closeEntry();
		in.close();
		
		// Completa o arquivo zip
		saidaZip.close();
	}
	catch(IOException e){
		// possíveis erros aqui
	}
Criado 19 de agosto de 2008
Ultima resposta 19 de ago. de 2008
Respostas 4
Participantes 2