Streamelés C#-ban: StreamReader és StreamWriter [Példa]

⚡ Okos összefoglaló

Az AC# stream egy réteg az alkalmazás és a fájl között, amely lehetővé teszi az adatok kis darabokban történő olvasását vagy írását. Itt megtudhatja, hogyan működik a StreamReader és a Stream.Writer munka, példákkal és a főbb áramlattípusokkal.

  • ???? Ami: A stream egy köztes réteg az alkalmazás és a fájl között.
  • ???? StreamReader: A StreamReader soronként vagy darabonként olvassa be a szöveget egy fájlból.
  • ✍️ FolyamWriter: FolyamWriter szöveget ír egy fájlba egy streamen keresztül.
  • 🧩 Patak típusok: FileStream, MemoryStream és BufferAz edStream mind a Stream osztályból származik.
  • 🤖 MI segítség: Az olyan mesterséges intelligencia eszközök, mint a GitHub Copilot, azonnal generálnak C# stream kódot.

C# adatfolyam-olvasó és Writer

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.

Streamek típusai C#-ban

A C# összes stream osztálya az absz.-ból származik.tract Stream osztályban a System.IO névtér. Minden típus más adatforrást céloz meg, de ugyanazokat az olvasási és írási metódusokat használja. Az alábbiakban a leggyakrabban használt adatfolyamokat soroljuk fel.

  • FileStream bájtonként vagy blokkonként olvas a lemezen lévő fájlokból és ír bele.
  • Memóriafolyam az adatokat memóriában tárolja fájl helyett, ami ideiglenes pufferek esetén hasznos.
  • BufferedStream egy másik adatfolyamot is becsomagol a lassú lemez- vagy hálózati műveletek számának csökkentése érdekében.
  • NetworkStream adatokat küld és fogad egy hálózati socketen keresztül.

A szöveggel való munkához a C# biztosítja a StreamReader és a StreamWriter segítő osztályok, amelyek egy streamet csomagolnak, és amelyeket a következő szakaszokban tárgyalunk.

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();
  }
 }
}

Code Magyarázat:-

  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.

Folyam 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.

Folyam 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();
  }
 }
}

Code Magyarázat:-

  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 stream write metódust használjuk a „Guru99 – ASP.Net” sort a streambe. A streambő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:-

Folyam Writer

A kimenetből látható, hogy a „GuruA „99 – ASP.Net” szöveg hozzáadása sikeresen megtörtént a fájlhoz. Mindhárom sornyi szöveg látható a konzolon.

GYIK

A stream egy köztes réteg egy alkalmazás és egy fájl között. A nagy fájlokat kisebb darabokra bontja, így az adatok olvashatók vagy írhatók anélkül, hogy a teljes fájlt a memóriába kellene tölteni.

A StreamReader egy fájlból egy adatfolyamon keresztül olvassa be a szöveges adatokat. Fájl.OpenText egy StreamReader értéket ad vissza, és a ReadLine metódusa soronként olvassa be a fájlt.

FolyamWriter szöveges adatokat ír egy fájlba egy adatfolyamon keresztül. A File.AppendText egy adatfolyamot ad vissza.Writer, és a WriteLine metódusa minden sort elküld a fájlba.

A gyakori adatfolyamok közé tartozik a FileStream fájlokhoz, a MemoryStream memóriában tárolt adatokhoz, BufferedStream a puffereléshez és NetworkStream a socketekhez. Mindegyik az absz.-ból származik.tract Patak osztály.

A FileStream nyers bájtokat olvas és ír egy fájlba, míg a StreamReader a folyamot karakterekké és sorokká csomagolja, hogy a szöveget karakterekként és sorokként olvassa. A StreamReader egyszerűbb szövegfájlok esetén.

A GitHub Copilothoz hasonló mesterséges intelligencia asszisztensek automatikusan kiegészítik a StreamReadert és a Streamet.Writer kódot, adj hozzá blokkokat a megsemmisítéshez, és generálj fájlolvasási ciklusokat egy rövid megjegyzésből.

Igen. A mesterséges intelligencia által vezérelt eszközök stream olvasási és írási metódusokat generálnak, pufferelést javasolnak nagy fájlok esetén, és using utasításokat adnak hozzá a streamek biztonságos lezárásához.

Egy using utasítás automatikusan lezárja és megsemmisíti a folyamot a blokk végén, még hiba esetén is. Ez felszabadítja a fájlkezelőt és megakadályozza az erőforrás-szivárgásokat.

Foglald össze ezt a bejegyzést a következőképpen: