SharpZipLib Erreur de Décompression

cs_charles84 Messages postés 21 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 13 mars 2008 - 16 nov. 2006 à 15:45
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 17 nov. 2006 à 14:36
Bonjour,

J'ai créé un programme en C# avec la libraire SharpZipLib 0.84... J'ai fais les tests et je me suis apercu que mon programme ne fonctionnait pas avec des archives de plus de 2Go (ce qui est la limite d'un long je crois). J'ai donc utilisé la mis a jour de SharpZipLib 0.85 ...et la une autre erreur apparait lors du Read(byte[] buffer, int offset, int count). Il me met comme erreur "size mismatch" plus des chiffres... ! Je comprend pas car lorsque je remet la version 0.84 cela fonctionne.

Voici une portion de code :

try

{

ZipInputStream zipIStream = new ZipInputStream(File.OpenRead(get_path_os ()));

ZipEntry theEntry;

ZipFile zFile = new ZipFile(get_path_os());

long size_total = 0 ;

foreach(ZipEntry eZip in zFile){

size_total = size_total + eZip.Size;

}

size_total = size_total / 1000 ;

pbar.Visible = true;

pbar.Minimum = 1 ;

pbar.Value = 1;

pbar.Maximum = Convert.ToInt32(size_total );

statusBar.Text = "[0%]En cours de téléchargement...";

button1.Enabled = false ;

double pourcentage;

double somme = 0;

double taille_final = Convert.ToDouble(size_total );

while ((theEntry = zipIStream.GetNextEntry()) != null && stop_thread ) {

string destinationDirectory = get_path_client() + "\\\" + get_os() + "\\\";

Directory.CreateDirectory (destinationDirectory );

int size = 4096 ;

byte[] data = new byte[4096];

FileStream fs = new FileStream(destinationDirectory + theEntry.Name,FileMode.Create );

if(theEntry.Size ! = 0){

while ((size = zipIStream.Read(data, 0, data.Length)) > 0 && stop_thread ) {

somme = somme + (size / 1000);

pourcentage = Convert.ToDouble((somme / taille_final ));

pourcentage = pourcentage * 100;

statusBar.Text = "["+ Convert.ToInt32(pourcentage)+"%]En cours de téléchargement..." ;

pbar.Step = size / 1000;

pbar.PerformStep();

fs.Write(data, 0, size);

}

}

fs.Flush();

fs.Close();

}

zipIStream.Close();

Si quelqu'un a la réponse je suis preneur...car je m en sort pas et je ne trouve pas la solution.... !!!

merci d'avance.

Cdt
Charles

2 réponses

cs_charles84 Messages postés 21 Date d'inscription dimanche 4 juillet 2004 Statut Membre Dernière intervention 13 mars 2008 1
17 nov. 2006 à 10:26
Personne n'a de réponse a ma question ??? donc je vais en poser une autre... Existe t-il une autre librairie ZIP pour C# ??? merci d'avance.

Cdt
Charles
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
17 nov. 2006 à 14:36
Salut,
Oui, dans le framework 2 tu peux utiliser le namespace System.IO.Compression.

<hr size="2" />-Blog-
0
Rejoignez-nous