Domanda:FileStream vs/differenze StreamWriter?
Che differenza c'è tra FileStream e StreamWriter in dotnet?
Quale contesto si suppone utilizzarlo? Qual è il loro vantaggio e svantaggio?
È possibile combinare questi due in uno?
Domanda:FileStream vs/differenze StreamWriter?
Che differenza c'è tra FileStream e StreamWriter in dotnet?
Quale contesto si suppone utilizzarlo? Qual è il loro vantaggio e svantaggio?
È possibile combinare questi due in uno?
Che differenza c'è tra FileStream e StreamWriter in dotnet?
A FileStream
è un Stream
. Come tutti gli stream, tratta solo i dati byte[]
.
A StreamWriter : TextWriter
, è un Stream-decoratore. Un TextWriter codifica i dati di testo come stringa o char a byte[]
e quindi li scrive sul collegamento Stream
collegato.
Quale contesto si suppone utilizzarlo? Qual è il loro vantaggio e svantaggio?
Si utilizza un FileStream nullo quando si dispone di dati byte[]
. Aggiungi un StreamWriter
quando vuoi scrivere del testo. Utilizzare un formattatore o un serializzatore per scrivere dati più complessi.
È possibile combinare questi due in uno?
Sì. Hai sempre bisogno di un flusso per creare uno StreamWriter. Il metodo di supporto System.IO.File.CreateText("path")
li creerà in combinazione e quindi dovrai solo eliminare() lo scrittore esterno.
FileStream scrive byte, StreamWriter scrive testo. È tutto.
In realtà, non è "tutto" ... Ma è una differenza corretta. – David
Un FileStream è esplicitamente destinato ai file di lavoro.
Uno StreamWriter può essere utilizzato per lo streaming a qualsiasi tipo di Stream - socket di rete, file, ecc
ScottGu spiega i diversi oggetti Stream abbastanza bene qui: http://www.codeguru.com/Csharp/Csharp/cs_data/streaming/article.php/c4223
Riferimento eccellente per gli stream, sebbene non riguardi i flussi R/W di accesso casuale. Soprattutto le informazioni di serializzazione/deserializzazione e la dimostrazione di flussi non file sono molto utili. +1 – ThunderGr
Bene, da MSDN per FileStream
:
Espone un flusso attorno a un file, supportando entrambe le operazioni di lettura e scrittura sincrone e asincrone.
e MSDN per StreamWriter
:
Implementa un TextWriter per la scrittura di caratteri in un flusso in una particolare codifica.
La differenza più evidente è che FileStream
permette operazioni di lettura/scrittura, mentre StreamWriter
è scrivere soltanto.
La pagina StreamWriter
prosegue aggiungendo:
StreamWriter è progettato per l'uscita di caratteri in una codifica particolare, mentre le classi derivate da flusso sono progettati per l'input e l'output di byte.
Quindi una seconda differenza è che FileStream
è per byte, mentre StreamWriter
è per il testo.
Sono due livelli diversi utilizzati per l'emissione di informazioni su origini dati note.
Un FileStream è un tipo di Stream, che concettualmente è un meccanismo che punta a una posizione e può gestire i dati in entrata e/o in uscita da e verso quella posizione. Gli stream esistono per la lettura/scrittura di file, connessioni di rete, memoria, pipe, console, debug e trace listers e alcuni altri tipi di fonti di dati. In particolare, esiste un FileStream per eseguire operazioni di lettura e scrittura sul file system. La maggior parte degli stream sono di livello piuttosto basso nel loro utilizzo e gestiscono i dati come byte.
Un StreamWriter è un wrapper per un flusso che semplifica l'utilizzo di tale flusso per l'output di testo normale. Espone metodi che accettano stringhe invece di byte ed esegue le conversioni necessarie da e verso gli array di byte. Ci sono altri scrittori; l'altro principale che useresti è XmlTextWriter, che facilita la scrittura di dati in formato XML. Ci sono anche le controparti Reader degli Scrittori che avvolgono in modo simile un flusso e facilitano il recupero dei dati.
Una differenza chiave (in aggiunta ai commenti precedenti) potrebbe essere che FileStream supporti l'acceess del disco casuale per leggere e scrivere su qualsiasi FileStream.Position specificato. Per modifiche di file di grandi dimensioni, può essere inestimabile.
È anche importante notare che 'FileStream' è un tipo di stream, specificamente adattato ai file. Gli stream funzionano nativamente con byte, tuttavia 'StreamWriter'/Reader scriverà/leggerà testo su * qualsiasi * stream, non solo' FileStream's. Ad esempio, 'MemoryStreams',' NetworkStreams', ecc. – iliketocode