Array
(
)

Ler arquivo txt Compactado

Carlos Andre
   - 13 jun 2012

Boa tarde,
Estou com um problema e peço uma ajuda.
Preciso fazer a leitura de um arquivo txt, o problema é que ele é baixado da internet em tempo de execução, e vem compactado no formato WAN.
Junto com este arquivo que quero ler, existem varios outros.
Pergunto a voces se tem como eu descompactar somente o arquivo que quero,e fazer a leitura somente dele?
Agradeço...
Aproveitando pergunto a voces se nao conhecem algum algoritmo que descubra o sexo da pessoa apartir do nome.

Paulo Gonçalves
   - 13 jun 2012

Carlos, por acaso este arquivo vem de algum sistema de transferência de arquivos tipo Connect Direct ou outro? Alguns sistemas deste tipo geram os arquivos com algoritmo proprio ... sem ver o arquivo fica meio dificil ... esta extensão não me parece usual em praticamente nenhum software de compactação ... mesmo com alguma busca no Google não pude observar nada.

Este arquivo é muito grande? Você consegue postar uma parte dele?

Carlos Andre
   - 13 jun 2012

Obrigado por tentar me ajudar Paulo...

Nao sei te dizer se os arquivos sao do tipo Connect Direct ou outro.

Esse arquivo .WAN eu pego da CVM Comissão de Valores Mobiliários, e nele tem os arquivos .txt que preciso para usar no codigo...

Outra coisa, eu consigo abri-lo no winrar.
Mandei o arquivo WAN para seu email(ledcrash@gmail.com), para ver se pode me ajudar...

Desde ja agradeço!

Paulo Gonçalves
   - 13 jun 2012

Estou saindo do trabalho agora. Chegando em casa verifico o arquivo e vejo se te dou alguma luz.

Só de saber que é um arquivo da CVM (e governo felizmente deixa alguma documentação na net) talvez consiga alguma coisa pra voce.

Paulo Gonçalves
   - 13 jun 2012

Carlos, bem, se entendi o que você precisa, para abrir o arquivo WAN (que nada mais é que um ZIP disfarçado) você deve manipular o arquivo e, a maneira mais fácil, é usar alguma biblioteca pronta que manipule este tipo de arquivo. Uma boa que eu já usei é a DotNetZip. Você pode baixá-la de http://dotnetzip.codeplex.com/.

Referencie a DLL Ionic.BZip2.dll no seu projeto. Renomeie programaticamente o arquivo WAN para ZIP (apesar de que eu acho que se você colocar o nome do arquivo sem modificações a DLL não vai deixar de abrir o arquivo. De qualquer forma, vale o teste que eu não fiz.

De qualquer forma, use o código abaixo para ler o arquivo e interar entre todos os arquivos contidos nele. No IF dentro do foreach, verifique o nome do arquivo e extraia somente ele. Mude a variável TargetDirectory para o caminho onde deseja extrair o arquivo.

#Código

using (ZipFile zip = ZipFile.Read(ExistingZipFile.zip))
{
  foreach (ZipEntry e in zip)
  {
    if(e.FileName.Equals(nomeDoArquivo)
        e.Extract(TargetDirectory, true);  // true => overwrite existing files
  }
}


Se não for isto, por favor, especifique melhor sua dúvida / problema.

Carlos Andre
   - 14 jun 2012

Muito obrigado Paulo consegui realizar o que precisava fazendo do jeito que falou!!!