2010-07-20 5 views
3

J'ai une chaîne compressée d'octets sortant d'une base de données dont j'ai besoin de décompresser pour récupérer le fichier rtf là-dedans. C'est l'exigence.decompress deflate64

J'ai essayé d'utiliser DotNetZip et il m'a donné un taux de réussite de 50%. L'échec de 50% m'a donné une erreur de chiffrement non prise en charge (0x09, deflate64). Donc je pense que mon problème est qu'une partie de la chaîne compressée est compressée en utilisant deflate64 alors que d'autres ne le sont pas. Je ne sais pas pourquoi.

J'ai trouvé que zlib, DeflateStream et beaucoup de paquets gratuits ne supportent pas deflate64. SevenZipSharp et KarnaCompression (port d'Info-zip à C#) prétendent le supporter, mais je continue d'obtenir des erreurs en utilisant les deux bibliothèques. SevenZipSharp me donne une exception "Data error" pour laquelle google n'a pas de réponse, et KarnaCompression me donne une exception aléatoire "Une tentative a été faite pour charger un programme avec un format incorrect" que je ne peux pas remonter à KarnaCompression .

Quelqu'un at-il un exemple pratique d'utilisation d'une bibliothèque pour décompresser un fichier codé deflate64? Ou peut me montrer comment prouver que mon zip n'est pas un fichier codé deflate64 et quelque chose d'autre? Payer 700 $ pour une licence Xceed est la dernière option.

+0

Avant d'acheter une licence Xceed, avez-vous utilisé sa version d'essai pour vérifier si vous pouvez tout décompresser ou est-ce que cela va aussi entraîner un taux de 50%? – Oliver

+0

Avez-vous essayé d'écrire les octets hors de la base de données dans un fichier et de les décompresser avec un outil (7zip, winrar, etc.) pour vérifier si vous pouvez les lire avec autre chose pour vous assurer que le contenu est vraiment valide? – Oliver

+1

Pour répondre à votre deuxième requête, j'ai écrit le flux dans un fichier et pouvoir l'ouvrir avec WinRAR. Je vais répondre à votre première question bientôt :) – Joe

Répondre

3

J'ai eu un problème similaire à ceci.

Mon problème était que j'essayais d'appeler le unzip32.dll à partir d'un exe 64 bits.

Check this out: 32 bit dll importing in 64 bit .Net application

+0

De quoi parlez-vous? Qu'est-ce que le unzip32.dll? Vous avez raison, je développe sur un système 64 bits. – Joe

+0

J'utilisais la DLL UnZip d'Info-ZIP mais je suis sûr que c'est la même chose pour chaque bibliothèque zip. – robbie

+0

J'ai finalement résolu le problème en utilisant SevenZipSharp. L'encapsulation d'Info-ZIP par KarnaCompression ne permet pas à l'extrait de diffuser uniquement le fichier. Le problème que vous avez souligné à juste titre était que j'utilisais la version 32 bits sur mon application 64 bits (construite sur tout processeur). Merci pour l'indice. – Joe

0

SevenSharpZip est seulement une enveloppe autour de la dll natif 7zip. Je préfère SharpZipLib comme une solution de compression pure .NET, mais elle ne supporte pas Deflate64. J'ai eu un coup de pouce à l'ajout de soutien, mais je ne suis pas familier avec leur mise en œuvre ZIP. Il y a une norme mais les différentes implémentations sont si différentes. J'ai fini par utiliser SevenSharpZip, mais j'ai récemment rencontré une erreur - j'ajoute la possibilité de sauvegarder l'archive avant de lancer des opérations, ce que je recommande aux autres.

Questions connexes