Question:
Qu'est-ce qui est différent entre FileStream
et StreamWriter
dans .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 FileStream
et StreamWriter
dans .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 FileStream
est 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 StreamWriter
lorsque 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 FileStream
permet les opérations de lecture / écriture, alors que StreamWriter
c'est en écriture uniquement.
La StreamWriter
page 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 FileStream
c'est pour les octets, tandis que StreamWriter
pour 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 FileStream
est 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 FileStream
existe 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 StreamWriter
est 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.
FileStream
s'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 seulementFileStream
s. Par exemple,MemoryStreams
,NetworkStreams
, etc ..