Probleme de memoire avec buffer [Résolu]

Signaler
Messages postés
448
Date d'inscription
mardi 20 septembre 2005
Statut
Membre
Dernière intervention
26 juillet 2012
-
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
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

Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
38
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