Stream in C# oktatóanyag: StreamReader és StreamWriter [Példa]

Mi az a C# Stream?

A C# fájlműveletekben általában a streameket használják a fájlok olvasására és írására. A folyam egy további réteg, amely egy alkalmazás és egy fájl között jön létre. Az adatfolyamot a fájl zökkenőmentes olvasási és írási műveleteinek biztosítására használják.

Az adatfolyamokat általában nagy fájlok olvasásakor használják. Az adatfolyamok használatával a nagy fájlok adatait kis darabokra bontják, és elküldik az adatfolyamba. Ezek az adattömbök ezután kiolvashatók az alkalmazásból.

A kis darabokra bontás oka az, hogy egy nagy fájl egy lépésben történő kiolvasása hatással van a teljesítményre. Ha mondjuk egy 100 MB-os fájlból olvasná az adatokat egyszerre, az alkalmazás lefagyhat és instabillá válhat. A legjobb megoldás az, ha adatfolyamokat használ a fájl kezelhető darabokra bontására.

Tehát amikor írási műveletet hajtanak végre a fájlon, az írandó adatok először az adatfolyamba kerülnek. Az adatfolyamból ezután az adatok a fájlba íródnak. Ugyanez vonatkozik az olvasási műveletre is. Az olvasási művelet során az adatok először a fájlból a folyamba kerülnek. Az adatok ezután az adatfolyamon keresztül kerülnek kiolvasásra az alkalmazásból. Nézzünk egy példát arra, hogyan tudunk olvasni és írni folyamok segítségével.

Streamolvasó

Az adatfolyam-olvasó egy fájlból adatfolyamok segítségével olvassa be az adatokat. A fájlból származó adatok először beolvasásra kerülnek az adatfolyamba. Ezt követően az alkalmazás beolvassa az adatokat a folyamból.

Példánkban feltételezzük, hogy a D meghajtón van egy Példa.txt nevű fájlunk. A fájl egy egyszerű szövegfájl lesz, és 2 sorból áll, az alábbiak szerint

  • Guru99 – .Net
  • Guru99 -C#

Példánkban egy egyszerű konzolalkalmazást fogunk létrehozni, és a fájlfolyamokkal fogunk dolgozni

Nézzünk egy példát arra, hogyan használhatunk adatfolyamokat egy fájlból adatok olvasására. Írja be az alábbi kódot a program.cs fájlba.

Streamolvasó

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

Kód magyarázata: -

  1. Először deklarálunk egy adatfolyam-olvasó objektumot. A streamolvasó objektumot a C# nyelvben a fájlból az alkalmazásba irányuló adatfolyam meghatározására használják. Az adatok a fájlból az adatfolyamba kerülnek, valahányszor adatot olvasnak be a fájlból. A fájl.OpenText az „Example.txt” fájl csak olvasható módban való megnyitására szolgál. A fájl kezelője ezután elküldésre kerül a folyamolvasó objektumnak.
  2. Ezután meghatározunk egy ideiglenes 's' változót, amely a fájl összes adatának kiolvasására szolgál.
  3. Ezután a ReadLine adatfolyam-olvasó metódussal olvassuk be az egyes sorokat az adatfolyam pufferből. Amikor ezt végrehajtjuk működés, minden sor először átkerül a fájlból a pufferbe. Ezután a karakterlánc átkerül a pufferből az 's' változóba. Ezután beírjuk az 's' karakterlánc tartalmát a konzolba.

Ha a fenti kód be van állítva, és a projekt a használatával fut Visual Studio, akkor az alábbi kimenetet kapja.

Kimenet:-

Streamolvasó

A kimenetből láthatja, hogy a Stream Reader mindkét sort beolvassa a fájlból. Végül a folyamból kiolvasott karakterlánc sorai elküldésre kerültek a konzolra.

Stream Writer

Az adatfolyam-írót arra használják, hogy adatfolyamok segítségével adatokat írjanak egy fájlba. Az alkalmazásból származó adatok először az adatfolyamba kerülnek. Ezután a stream az adatokat a fájlba írja. Nézzünk egy példát arra, hogyan használhatunk adatfolyamokat fájlból adatok írására. Írja be az alábbi kódot a program.cs fájlba.

Stream Writer

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

Kód magyarázata: -

  1. Először deklarálunk egy adatfolyam-író objektumot. A stream writer objektumot a C# használja egy adatfolyam meghatározására. Az adatfolyamot ezután az alkalmazásból a fájlba írják. Az adatok az alkalmazásból a streambe kerülnek, amikor adatokat kell írni. A File.AppendText paranccsal nyitható meg az „Example.txt” fájl hozzáfűzési módban. A fájl kezelője ezután elküldésre kerül a folyamíró objektumnak.
  2. A Writeline adatfolyam írási módszert használjuk a „Guru99 – ASP.Net” sor írásához a folyamba. A folyamból a sor ezután a fájlba kerül.
  3. Ezután bezárjuk a stream-írót a fájlba írás után. Általában jó gyakorlat a fájlkezelők bezárása, amikor a fájlra már nincs szükség írási célokra.
  4. Végül újra elolvassuk a fájl tartalmát, és beírjuk a konzolnaplóba. Ez annak ellenőrzésére szolgál, hogy a sort a fájlba írták-e.

Ha a fenti kód be van állítva, és a projekt a Visual Studio használatával fut, az alábbi kimenetet kapja.

Kimenet:-

Stream Writer

A kimeneten látható, hogy a „Guru99 – ASP.Net” sort sikeresen hozzáadtuk a fájlhoz. Mind a 3 sornyi szöveg látható a konzolon.

Összegzésként

  • Az adatfolyamok köztes szintként szolgálnak az alkalmazás és a fájl között.
  • A StreamReader akkor használatos, amikor egy fájlból adatokat kell olvasni.
  • A Streamwriter akkor használatos, amikor adatokat kell fájlba írni.