Zoeken…


Streams gebruiken

Een stream is een object dat op een laag niveau gegevens overdraagt. Ze fungeren zelf niet als gegevenscontainers.

De gegevens waarmee we omgaan hebben de vorm van een bytearray ( byte [] ). De functies voor lezen en schrijven zijn allemaal op bytes gericht, bijv. WriteByte() .

Er zijn geen functies voor het omgaan met gehele getallen, tekenreeksen, enz. Dit maakt de stream erg algemeen, maar minder eenvoudig om mee te werken als u bijvoorbeeld tekst wilt overbrengen. Stromen kunnen met name erg handig zijn als u te maken hebt met een grote hoeveelheid gegevens.

We moeten een ander type stream gebruiken op basis van waar het moet worden geschreven / gelezen (dwz de back-upwinkel). Als de bron bijvoorbeeld een bestand is, moeten we FileStream :

string filePath = @"c:\Users\exampleuser\Documents\userinputlog.txt";
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
    // do stuff here...

    fs.Close();
}

Op dezelfde manier wordt MemoryStream gebruikt als de achtergrondopslag geheugen is:

// Read all bytes in from a file on the disk.
byte[] file = File.ReadAllBytes(“C:\\file.txt”);

// Create a memory stream from those bytes.
using (MemoryStream memory = new MemoryStream(file))
{
   // do stuff here...
}

Op dezelfde manier wordt System.Net.Sockets.NetworkStream gebruikt voor netwerktoegang.

Alle streams zijn afgeleid van de generieke klasse System.IO.Stream . Gegevens kunnen niet direct worden gelezen of geschreven uit streams. Het .NET Framework biedt StreamReader zoals StreamReader , StreamWriter , BinaryReader en BinaryWriter die converteren tussen native typen en de low-level streaminterface en de gegevens voor u van of naar de stream overbrengen.

StreamReader lezen en schrijven kan via StreamReader en StreamWriter . Men moet voorzichtig zijn bij het sluiten van deze. Standaard sluit sluiten ook de ingesloten stream en maakt deze onbruikbaar voor verder gebruik. Dit standaardgedrag kan worden gewijzigd door een constructor met de parameter bool leaveOpen en de waarde ervan in te stellen als true .

StreamWriter :

FileStream fs = new FileStream("sample.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
string NextLine = "This is the appended line.";
sw.Write(NextLine);
sw.Close();
//fs.Close(); There is no need to close fs. Closing sw will also close the stream it contains.

StreamReader :

using (var ms = new MemoryStream())
{
    StreamWriter sw = new StreamWriter(ms);
    sw.Write(123);
    //sw.Close();     This will close ms and when we try to use ms later it will cause an exception
    sw.Flush();     //You can send the remaining data to stream. Closing will do this automatically
    // We need to set the position to 0 in order to read 
    // from the beginning.
    ms.Position = 0;
    StreamReader sr = new StreamReader(ms);
    var myStr = sr.ReadToEnd();
    sr.Close();
    ms.Close();
}

Aangezien Classes Stream , StreamReader , StreamWriter , etc. de IDisposable interface IDisposable , kunnen we de methode Dispose() gebruiken voor objecten van deze klassen.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow