Probleme de memoire avec buffer

Résolu
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 27 oct. 2009 à 19:35
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 28 oct. 2009 à 09:35
bonjour, je sais pas si je suis dans la bonne catégorie...
je veux sauvegarder une bd sql
puis la copier sur un support amovible apres l'avoir compressé
ma "methode" marchait bien jusqu'a maintenant (bd pas trop grosse a priori)
mais la elle pese peut etre un peu lourd (2GO) et j'ai un systemoutofmemory exception

voici ce que je fais ...

FileStream monFileStream = new FileStream(rep + fich_sauv, FileMode.Open);
byte[] monBuffer = new byte[monFileStream.Length];
// Lecture de l'intégralité du FileStream
monFileStream.Read(monBuffer, 0, System.Convert.ToInt32(monFileStream.Length));
// Fermeture du FileStream
monFileStream.Close();
// Création du fichier qui va contenir le fichier compressé
monFileStream = new FileStream(rep + fich_sauv + ".gz", FileMode.Create);

// Compression des données
GZipStream monGZipStream = new GZipStream(monFileStream, CompressionMode.Compress, false);
// Ecriture des données compressées dans le fichier de destination
monGZipStream.Write(monBuffer, 0, monBuffer.Length);
// Fermeture du GZipStream
monGZipStream.Close();

ca bloque a la deuxieme ligne ... (trop gros)

comment dois je faire pour que ca passe ?

merci

1 réponse

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
28 oct. 2009 à 09:35
Salut, c'est normal que ça plante, tu charges l'intégralité de ton fichier en mémoire ( combien as tu de RAM libre ?? ), imagine si tu devais copier une vidéo HD de 25GO ...

Inspire toi de ce snippet :

http://www.codyx.org/snippet_compression-decompression-gzip_213.aspx
3
Rejoignez-nous