Streamwriter et buffer

Signaler
Messages postés
79
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
22 juin 2011
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

Messages postés
79
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
22 juin 2011

Salut !

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

Oledbadapter.Fill(mondataset, "TABL");

Exception: OutOfMemory
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
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
*/