Lendo arquivo GZip

11 respostas
Y

olá
eu dnovo aqui,
queria saber se é possivel com o java (especificamente applet) ler um arquivo compactado pela zlib , arquivo simples .gz

11 Respostas

J

Oi

yZarc, é possível sim… Mas vc terá que criar certificados para assinar a tua applet… Para que ela possa ter acesso a arquivos…

T+

D

questao de seguranca…

certo Jeve!??

J

Oi

darkseid, certissimo cara… Como a applet roda no Cliente, ela nao tem acesso a diversas coisa, por questoes de seguranca… E para que vc tenha acesso tu deve criar certificados de seguranca que acompanham a Applet… Aì quando o Clkiente executa ele é avisado que a Applet tem poderes extras e se ele quiser, não executa.

T+

J

Entrei de “bicão”… hehehehehehe
Como cria este certificado?

F

Esse é auqle tipico certificado que vc aceita sempre ou não( como da Macromedia, Symantec, Sun, eetc…) ele da acesso ao programa da net manipular arquivos no computador remoto…Eu também nunca fiz isso , seria legal pegar alg para criar isso , um Tutorial ou apostila…Gostaria de saber tmb…

Lembre-se que isso também pode servir para invasões e etc…por isso não aceite qualquer certificado…Vqaleu :roll:

Y

sobre a assinatura do applet jeveaux que me passou, o link em outro topico para o pdf é esse http://www.javasoft.com.br/articles/tcljava03/tcljava03.pdf

mas então, esse applet ja está assinado e funcionando beleza, pq leio um arquivo de uma url um txt e gravo no pc na pasta de bkp, só que preciso pegar um gzip e gravar em formato texto, queria saber qual classe que uso pra fazer isso, alguem tem a dica ai?

seria meio que descompactar o gz e retornar ele em formato texto.

valew dnovo

J

Oi

Eu lembro de ter publicado no meu Blog um script pra assinar applets com um só clique… Quando o blog voltar pro ar eu pego o script lá.

T+

C
"yZarc":
sobre a assinatura do applet jeveaux que me passou, o link em outro topico para o pdf é esse http://www.javasoft.com.br/articles/tcljava03/tcljava03.pdf

mas então, esse applet ja está assinado e funcionando beleza, pq leio um arquivo de uma url um txt e gravo no pc na pasta de bkp, só que preciso pegar um gzip e gravar em formato texto, queria saber qual classe que uso pra fazer isso, alguem tem a dica ai?

seria meio que descompactar o gz e retornar ele em formato texto.

valew dnovo

é possivel sim, mas voce tem que usar a classe java.util.zip.GZIPInputStream.

O codigo abaixo usa a classe java.util.zip.ZIPInputStream, mas creio eu que muda pouca coisa. De qualquer forma no tutorial da sun tem isso.

public byte[] getFile(String name, String ext[]) {
    final int BUFFER = 5000;
    byte data[];
    boolean gogogo = true;
    try {
      data = new byte[BUFFER];
      ByteArrayOutputStream dest = null;

      FileInputStream fis = new FileInputStream(name);
      ZipInputStream  zis = new ZipInputStream(new BufferedInputStream(fis));
      ZipEntry entry;
      String extFile = ".dat";
      while ( (entry = zis.getNextEntry()) != null && gogogo) {
        //System.out.println("Examinando: " + entry);
        int count;
        int part   = entry.getName().lastIndexOf(".");
        extFile = entry.getName().substring(part);
        boolean go = false;

        for(int i=0; i < ext.length; i++){
          if(extFile.equalsIgnoreCase(ext[i])){
            go = true;
            break;
          }else
            go = false;
        }
        if(go){
          dest = new ByteArrayOutputStream(BUFFER);
          while ((count = (zis.read(data,0,BUFFER))) != -1){
            dest.write(data, 0, count);
          }
          gogogo = false;
        }

        if (dest != null){
          data = dest.toByteArray();
          dest.close();
        }
       }
      fis.close();
      zis.close();

      return data;
    }
    catch(Exception e){
      e.printStackTrace();
    }
    return null;
  }

Acredite se quiser usei isso em um aplicativo que trocava o spray do jogo Counter-Strinke. Na verdade o aplicativo lista todos os arquivos de um direitorio com extenção .zip e quando se clica em um (que fica numa JList) ele mostra a foto do logotipo que tem dentro do zip. O codigo que postei é usado para recuperar a imagem que fica dentro do zip. Está meio bagunçado devido a preça e usei para aprender a manipular zips. Você pode melhora-lo ou deixar assim. Eu sei que funciona =P

Y

beleza caras, valeuu
o cod vai ser bem util,
vou tentar modificar ele, se funcionar ai mando aqui pra gzip no lugar do zip

thk a lot

Y

vixi, to precisando de ajuda aqui,
pra descompactar ta beleza o source,
redondinho,
o unico problema é em pegar o arquivo compactado do servidor, ele ta vindo corrompido, vejam só

FileWriter writer = new FileWriter(BaseDIR);
      PrintWriter saida = new PrintWriter(writer);

      URL url = new URL(BaseURL);

      BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
      String str;

      while ((str = in.readLine()) != null) {
        saida.println(str + "\n");
      }

BaseDIR é a saida, arquivo.gz
BaseURL é o arquivo no servidor, www.server.com/arquivo.gz

ele pega e grava o arquivo no pc normau, só que quando vo descompactar o arquivo, tala que ta corrompido,
tem uma outra forma de pegar o arquivo do servidor ?

C

Não use String para guardar o conteudo de arquivos compactados. Use byte[]. Só use String para textos.

Criado 30 de junho de 2004
Ultima resposta 5 de jul. de 2004
Respostas 11
Participantes 6