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.
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.
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:-
- 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.
- Ezután meghatározunk egy ideiglenes 's' változót, amely a fájl összes adatának kiolvasására szolgál.
- 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:-
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.
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:-
- 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.
- 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.
- 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.
- 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:-
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.





