soupiste
Messages postés79Date d'inscriptionsamedi 12 avril 2008StatutMembreDernière intervention22 juin 2011
-
26 juin 2010 à 20:11
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDerniè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.
cs_coq
Messages postés6351Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 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.