Stream StringBuilder dans un fichier
J'ai besoin de créer un grand texte du document. J'utilise actuellement StringBuilder
de rendre le document et ensuite appeler File.WriteallText(filename,sb.ToString)
. Malheureusement, c'est maintenant de commencer à jeter de la mémoire des exceptions.
Est-il une meilleure façon de diffuser un StringBuilder
de fichier ou est-il une autre technique que je devrais utiliser?
source d'informationauteur GreyCloud
Vous devez vous connecter pour publier un commentaire.
Au lieu d'utiliser
StringBuilder
essayez d'utiliserTextWriter
(qui a assez similaire de l'API, mais qui peut écrire à un certain nombre de sous-jacents destinations, y compris des fichiers) - c'est à direPlus généralement, il vaut la peine de séparer le code qui connaît des fichiers à partir du code qui sait sur la façon d'écrire les données, c'est à dire
de ce fait, il est plus facile d'écrire à des cibles différentes. Par exemple, vous pouvez désormais le faire en mémoire:
Le point de l'être: votre
Serialize
code n'a pas besoin de changer pour accueillir une cible différente. Cela pourrait aussi être écrit directement à un réseau, ou de l'écriture par le biais d'un système de compression/chiffrement de flux. Très polyvalente.Il suffit d'utiliser un
StreamWriter
qui écrit dans unFileStream
:Cela signifie que vous ne pouvez pas modifier le texte qui est déjà écrit, comme vous pouvez le faire dans un
StringBuilder
mais je suppose que vous ne l'utilisez pas, de toute façon.Pourquoi ne pas en streaming directement dans le flux?
Vous pouvez utiliser le TextWriter.
Vous pouvez utiliser StreamWriter et écrire dans le fichier directement.