Meilleure façon de les écrire énorme chaîne de caractères dans un fichier

En C#, je suis en train de lire une taille moyenne de fichier (100 KO ~ 1 MO), la modification de certaines parties du contenu, et, enfin, l'écriture dans un fichier différent. Tous les contenus sont texte. La Modification est effectuée comme des objets de chaîne et de la chaîne des opérations. Ma démarche actuelle est:

  1. Lire chaque ligne du fichier d'origine en utilisant StreamReader.
  2. Ouvrir un StringBuilder pour le contenu du nouveau fichier.
  3. Modifier la chaîne de l'objet et l'appel de AppendLine de la StringBuilder (jusqu'à la fin du fichier)
  4. Ouvrir un nouveau StreamWriter, et d'écrire le StringBuilder à l'écriture de flux.

Cependant, j'ai trouvé que StremWriter.Write tronque 32768 octets (2^16), mais la longueur de StringBuilder est plus grand que cela. Je pourrais écrire une simple boucle pour garantir l'ensemble de la chaîne de caractères dans un fichier. Mais, je me demandais quel serait le moyen le plus efficace en C# pour faire cette tâche?

Pour résumer, j'aimerais modifier seulement certaines parties d'un fichier texte et écrire dans un fichier différent. Mais, le texte de taille de fichier pourrait être plus important que de 32768 octets.

== Réponse == je suis désolé de faire confusin pour vous! C'était juste que je n'ai pas d'appel flush. StremWriter.Write ne dispose pas d'un court (par exemple, 2^16) limitation.

En utilisant le générateur de chaîne est le meilleur moyen je pense
Avez-vous de la chasse ou de fermer votre StreamWriter?
La chasse d'eau est appelée automatiquement lorsque vous fermez l'écrivain (qui vous devriez vraiment le faire). Pour fermer l'écrivain, vous devez Disposer d'appel au lieu de les Fermer afin de vous libérer des ressources non managées. La meilleure façon de le faire est d'utiliser l'instruction à l'aide.
Donc... a Été le correctif encore à appeler Flush, ou fait quelque chose d'autre travail? Avoir un extrait de code? Je suis en cours d'exécution dans la même situation dans un HttpModule.
Jamais l'esprit... je l'ai juste essayé. Il a travaillé!

OriginalL'auteur Nullptr | 2011-02-17