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?
la source
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?
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
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 ..FileStream écrit des octets, StreamWriter écrit du texte. C'est tout.
la source
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
la source
Eh bien, du MSDN pour
FileStream
:et le MSDN pour
StreamWriter
:La différence la plus évidente est que
FileStream
permet les opérations de lecture / écriture, alors queStreamWriter
c'est en écriture uniquement.La
StreamWriter
page continue en ajoutant:Donc, une deuxième différence est que
FileStream
c'est pour les octets, tandis queStreamWriter
pour le texte.la source
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, unFileStream
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 leXmlTextWriter
, 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.la source
Une différence clé (en plus des commentaires ci-dessus), pourrait être que FileStream prend en charge l'accès aléatoire au disque en lecture et en écriture dans n'importe quel FileStream.Position spécifié. Pour les modifications de fichiers volumineux, cela peut être inestimable.
la source