Per espandere un po 'le altre risposte qui e aiutare a spiegare un sacco del codice di esempio che vedrai punteggiato, la maggior parte delle volte non leggi e scrivi direttamente in uno stream. Gli stream sono mezzi di basso livello per trasferire i dati.
Noterai che le funzioni di lettura e scrittura sono tutte orientate ai byte, ad es. WriteByte(). Non ci sono funzioni per gestire interi, stringhe, ecc. Ciò rende lo stream molto generico, ma meno semplice da utilizzare se, per esempio, si desidera semplicemente trasferire il testo.
Tuttavia, .NET fornisce classi che convertono tra tipi nativi e l'interfaccia di flusso di basso livello e trasferisce i dati ao dallo stream per te. Alcune di queste classi degne di nota sono:
StreamWriter // Badly named. Should be TextWriter.
StreamReader // Badly named. Should be TextReader.
BinaryWriter
BinaryReader
Per utilizzare questi, prima si acquista il vostro flusso, quindi si crea una delle classi di cui sopra e di associarla con il flusso. Per esempio.
MemoryStream memoryStream = new MemoryStream();
StreamWriter myStreamWriter = new StreamWriter(memoryStream);
StreamReader e StreamWriter conversione tra tipi nativi e le loro rappresentazioni di stringa poi trasferire le stringhe da e per il flusso di byte. Quindi
myStreamWriter.Write(123);
scriverà "123" (tre caratteri '1', '2' poi '3') allo stream. Se hai a che fare con file di testo (ad es. Html), StreamReader e StreamWriter sono le classi che useresti.
considerando
myBinaryWriter.Write(123);
scriverà quattro byte che rappresentano il valore intero di 32 bit 123 (0X7B, 0x00, 0x00, 0x00). Se hai a che fare con file binari o protocolli di rete, BinaryReader e BinaryWriter sono quelli che potresti usare. (Se si stanno scambiando dati con reti o altri sistemi, è necessario prestare attenzione allo , ma questo è un altro post.)
Si consiglia di controllare http://stackoverflow.com/questions/507747/can-you-explain-the-concept-of-streams – Preets
Prendere una matrice di byte e quindi creare un wrapper per esso ('Stream') che espone alcuni metodi utili come leggere, scrivere e cambiare posizione. Ora è possibile creare classi basate sul loro backing store (FileStream, MemoryStream) che ereditano da 'Stream' e si basano su tale funzionalità basata sul particolare backing store. –