Question:
Qu'est-ce qui est différent entre FileStreamet StreamWriterdans .Net ?
Dans quel contexte êtes-vous censé l'utiliser? Quel est leur avantage et leur inconvénient?
Est-il possible de combiner ces deux en un seul?
Question:
Qu'est-ce qui est différent entre FileStreamet StreamWriterdans .Net ?
Dans quel contexte êtes-vous censé l'utiliser? Quel est leur avantage et leur inconvénient?
Est-il possible de combiner ces deux en un seul?
Réponses:
Quelle est la différence entre FileStream et StreamWriter dans dotnet?
A FileStreamest un Stream. Comme tous les Streams, il ne traite que des byte[]données.
A StreamWriter : TextWriter, est un décorateur de Stream. Un TextWriter encode les données de texte comme une chaîne ou un caractère byte[], puis les écrit dans le fichier lié Stream.
Dans quel contexte êtes-vous censé l'utiliser? Quel est leur avantage et leur inconvénient?
Vous utilisez un FileStream nu lorsque vous avez des byte[]données. Vous ajoutez un StreamWriterlorsque vous souhaitez écrire du texte. Utilisez un formateur ou un sérialiseur pour écrire des données plus complexes.
Est-il possible de combiner ces deux en un seul?
Oui. Vous avez toujours besoin d'un Stream pour créer un StreamWriter. La méthode d'assistance System.IO.File.CreateText("path")les créera en combinaison et vous n'aurez alors qu'à Dispose () l'écrivain externe.
FileStream écrit des octets, StreamWriter écrit du texte. C'est tout.
Un FileStream est explicitement destiné aux fichiers de travail.
Un StreamWriter peut être utilisé pour diffuser vers n'importe quel type de Stream - sockets réseau, fichiers, etc.
ScottGu explique assez bien les différents objets Stream ici: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
Eh bien, du MSDN pour FileStream:
Expose un Stream autour d'un fichier, prenant en charge les opérations de lecture et d'écriture synchrones et asynchrones.
et le MSDN pour StreamWriter:
Implémente un TextWriter pour écrire des caractères dans un flux dans un encodage particulier.
La différence la plus évidente est que FileStreampermet les opérations de lecture / écriture, alors que StreamWriterc'est en écriture uniquement.
La StreamWriterpage continue en ajoutant:
StreamWriter est conçu pour la sortie de caractères dans un codage particulier, tandis que les classes dérivées de Stream sont conçues pour l'entrée et la sortie d'octets.
Donc, une deuxième différence est que FileStreamc'est pour les octets, tandis que StreamWriterpour le texte.
Il s'agit de deux niveaux différents utilisés pour la sortie d'informations vers des sources de données connues.
A FileStreamest un type de Stream, qui est conceptuellement un mécanisme qui pointe vers un emplacement et peut gérer des données entrantes et / ou sortantes vers et depuis cet emplacement. Il existe des flux pour lire / écrire dans des fichiers, des connexions réseau, de la mémoire, des canaux, la console, des écouteurs de débogage et de trace, et quelques autres types de sources de données. Plus précisément, un FileStreamexiste pour effectuer des lectures et des écritures dans le système de fichiers. La plupart des flux sont assez bas dans leur utilisation et traitent les données sous forme d'octets.
A StreamWriterest un wrapper pour un flux qui simplifie l'utilisation de ce flux pour produire du texte brut. Il expose des méthodes qui prennent des chaînes au lieu d'octets et effectue les conversions nécessaires vers et à partir de tableaux d'octets. Il y a d'autres écrivains; L'autre principal que vous utiliseriez est le XmlTextWriter, qui facilite l'écriture de données au format XML . Il existe également des équivalents Reader aux Writers qui encapsulent de la même manière un Stream et facilitent la récupération des données.
FileStreams'agit d'un type de flux, spécifiquement adapté aux fichiers. Les flux fonctionnent nativement avec des octets, cependantStreamWriter/ Reader écrira / lira du texte sur n'importe quel flux, pas seulementFileStreams. Par exemple,MemoryStreams,NetworkStreams, etc ..