Frage:
Was ist anders zwischen FileStream
und StreamWriter
in .Net ?
Welchen Kontext solltest du verwenden? Was ist ihr Vor- und Nachteil?
Ist es möglich, diese beiden zu einem zu kombinieren?
quelle
Frage:
Was ist anders zwischen FileStream
und StreamWriter
in .Net ?
Welchen Kontext solltest du verwenden? Was ist ihr Vor- und Nachteil?
Ist es möglich, diese beiden zu einem zu kombinieren?
Was unterscheidet FileStream und StreamWriter in dotnet?
A FileStream
ist a Stream
. Wie bei allen Streams werden nur byte[]
Daten behandelt.
A StreamWriter : TextWriter
, ist ein Stream-Dekorateur. Ein TextWriter codiert Textdaten wie Zeichenfolge oder Zeichen byte[]
und schreibt sie dann in den verknüpften Text Stream
.
Welchen Kontext solltest du verwenden? Was ist ihr Vor- und Nachteil?
Sie verwenden einen nackten FileStream, wenn Sie byte[]
Daten haben. Sie fügen ein hinzu, StreamWriter
wenn Sie Text schreiben möchten. Verwenden Sie einen Formatierer oder einen Serializer, um komplexere Daten zu schreiben.
Ist es möglich, diese beiden zu einem zu kombinieren?
Ja. Sie benötigen immer einen Stream, um einen StreamWriter zu erstellen. Die Hilfsmethode System.IO.File.CreateText("path")
erstellt sie in Kombination, und dann müssen Sie nur noch den äußeren Writer entsorgen ().
FileStream
es sich um eine Art Stream handelt, der speziell auf Dateien zugeschnitten ist. Streams arbeiten nativ mit Bytes,StreamWriter
/ Reader schreibt / liest jedoch Text in jeden Stream, nicht nur inFileStream
s. Zum BeispielMemoryStreams
,NetworkStreams
etc ..FileStream schreibt Bytes, StreamWriter schreibt Text. Das ist alles.
quelle
Ein FileStream ist explizit für Arbeitsdateien vorgesehen.
Ein StreamWriter kann zum Streamen zu jedem Stream- Typ verwendet werden - Netzwerk-Sockets, Dateien usw.
ScottGu erklärt die verschiedenen Stream-Objekte hier sehr gut: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
quelle
Nun, aus dem MSDN für
FileStream
:und die MSDN für
StreamWriter
:Der offensichtlichste Unterschied besteht darin,
FileStream
dass Lese- / Schreibvorgänge zulässig sind, währendStreamWriter
nur geschrieben wird.Die
StreamWriter
Seite fügt hinzu:Ein zweiter Unterschied besteht also darin, dass
FileStream
es sich um Bytes handelt, währendStreamWriter
es sich um Text handelt.quelle
Dies sind zwei verschiedene Ebenen, die bei der Ausgabe von Informationen an bekannte Datenquellen verwendet werden.
A
FileStream
ist eine Art Stream, bei dem es sich konzeptionell um einen Mechanismus handelt, der auf einen bestimmten Ort verweist und eingehende und / oder ausgehende Daten von und zu diesem Ort verarbeiten kann. Es gibt Streams zum Lesen / Schreiben in Dateien, Netzwerkverbindungen, Speicher, Pipes, die Konsole, Debug- und Trace-Listener und einige andere Arten von Datenquellen. Insbesondere aFileStream
vorhanden, um Lese- und Schreibvorgänge in das Dateisystem durchzuführen. Die meisten Streams verwenden nur sehr wenig und verarbeiten Daten als Bytes.A
StreamWriter
ist ein Wrapper für einen Stream, der die Verwendung dieses Streams zur Ausgabe von einfachem Text vereinfacht. Es macht Methoden verfügbar, die Zeichenfolgen anstelle von Bytes verwenden, und führt die erforderlichen Konvertierungen in und von Bytearrays durch. Es gibt andere Schriftsteller; Das andere HauptelementXmlTextWriter
, das Sie verwenden würden, ist das , das das Schreiben von Daten im XML- Format erleichtert . Es gibt auch Reader-Gegenstücke zu den Writern, die einen Stream auf ähnliche Weise umschließen und das Zurückholen der Daten erleichtern.quelle
Ein wesentlicher Unterschied (zusätzlich zu den obigen Kommentaren) könnte sein, dass FileStream das zufällige Lesen und Schreiben von Datenträgern auf eine beliebige angegebene FileStream.Position unterstützt. Bei großen Dateimodifikationen kann dies von unschätzbarem Wert sein.
quelle