Compression de fichiers (visual c++)

ryoussef1983 Messages postés 14 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 13 juin 2007 - 11 mai 2007 à 11:51
emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 - 12 mai 2007 à 19:11
bonjour,
 je travaille avec visual c++ sous visual studio 2005
j'ai crée une méthode pour compresser des fichiers et je l'ai associé à un button de ma form
mais quand je compile et je clique sur le boutton , ca compress le fichier en un fichier .gz( de type GZip)
mais quand je veux l'ouvrir ,  il me mets arrchive inexistant !
est ce que quelqu'un a une idée pour résoudre ce pb?
voici le code :



//l’evenement associé au clik sur le boutton Compress<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>






 






private
: System::Void buttoncompress_Click(System::Object^  sender, System::EventArgs^  e) {






 






FileStream ^fs = gcnew FileStream("C:\\test.txt", FileMode::Open);






                 
 BinaryReader ^br = gcnew BinaryReader(fs);






                 
 FileStream ^fsw = gcnew FileStream("C:\\testcomp.gz",FileMode::CreateNew);






                 
 BinaryWriter ^bw = gcnew BinaryWriter(fsw);






 







                 
 
try







                 
 {






                       
 bw->Write(compressFile(br->ReadBytes((int)fs->Length)));






                 
 }






                 
 
catch (Exception^)






                 
 {






                 
 }






                 
 
finally







                 
 {






                       
 br->Close();






           
         fs->Close();






           
         bw->Close();






           
         fsw->Close();






                 
 

}





}






 






//La méthode CompressFile






 






public
:






     
 
array<unsignedchar> ^compressFile(array<unsignedchar> ^compressed)





{






     MemoryStream ^mscompress = gcnew MemoryStream();






      GZipStream ^gscompress = gcnew GZipStream(mscompress, CompressionMode::Compress,false);






 








    gscompress->Write(compressed, 0, compressed->Length);





//    gscompress->FlushFinalBlock();






 








    compressed = mscompress->ToArray();






     

return
compressed; 






      







}






 




et merci d'avance

1 réponse

emmatopiak Messages postés 149 Date d'inscription mercredi 28 mars 2007 Statut Membre Dernière intervention 17 mai 2007 2
12 mai 2007 à 19:11
Salut,

compressed = mscompress->ToArray(); <--- je comprend pas cette ligne la dans la fonction de compression

ah si remarque peut etre attend, lol ok bon..
l'erreur est a mon avis sur cette ligne :
compressed = mscompress->ToArray();
car compressed est ton parametre et du coup tu devrais faire une autre variable que tu retournes plutot que d'utiliser l'argument
 et de toutes facons, appeler compressed un tableau non compressé c'est dommage
faudrait que tu changes ca et si ca marche pas dis nous si le fichier .gz est vide ou pas

Une autruche ne se cuit pas aux petits lardons.
0
Rejoignez-nous