Streamwriter et buffer

soupiste Messages postés 79 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 22 juin 2011 - 26 juin 2010 à 20:11
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 27 juin 2010 à 00:44
Bonsoir a tous !

Je voudrais utiliser streamwriter avec un buffer afin de palier une exception de type OutOfMemory lors de la creation d'un fichier ".csv" qui parfois peut dépasser les 300 Mo de taille, donc des fichiers de plus 3 000 000 de lignes:

resultat est un List<String> qui contient toutes mes lignes du fichier a creer.

CODE:

FileStream fs = new FileStream(FichierAcreer, FileMode.CreateNew, FileAccess.Write);
StreamWriter Writer = new StreamWriter(fs))
resultat.ForEach(s => Writer.WriteLine(s));
Writer.Close();
fs.Close();

Alors, je ne sais pas si cela résoudra mon problème, mais je voudrais utiliser un Buffer de taille relative a la ligne lue dans mon List<String>, afin de faciliter mon ecriture dans le fichier.

J'essaie plusieurs éléments sans succès; A moins que ma méthode de création de fichier soit contournable.

Merci !

2 réponses

soupiste Messages postés 79 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 22 juin 2011
26 juin 2010 à 22:08
Salut !

Il se trouve qu'en realite le probleme se situe au niveau du remplissage de mon datatable.

Oledbadapter.Fill(mondataset, "TABL");

Exception: OutOfMemory
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
27 juin 2010 à 00:44
Salut,

Le traitement nécessite il vraiment de passer par un chargement complet des données en mémoire ?
Si non, autant le traiter directement en flux : lecture du row sur le DataReader => traitement => écriture sur disque.

Concernant la taille du buffer, vu l'initialisation effectuée sur FileStream et StreamWriter dans le code d'exemple, elle est de 4Ko.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous