Strömma i C#: StreamReader och StreamWriter [Exempel]

⚡ Smart sammanfattning

AC# stream är ett lager mellan din applikation och en fil som låter dig läsa eller skriva data i små bitar. Här lär du dig hur StreamReader och Stream fungerarWriter arbete, med exempel och huvudströmstyperna.

  • 🌊 Vad det är: En ström är ett mellanlager mellan din applikation och en fil.
  • ???? StreamReader: StreamReader läser text från en fil en rad eller ett segment i taget.
  • ✍️ StreamWriter: StreamWriter skriver text till en fil via en ström.
  • 🧩 Strömtyper: FileStream, MemoryStream och BufferedStream härleds alla från Stream-klassen.
  • 🤖 AI-hjälp: AI-verktyg som GitHub Copilot genererar C#-strömkod direkt.

C# Stream Reader och Writer

Vad är C# Stream?

I C#-filoperationer används normalt strömmar för att läsa och skriva till filer. En ström är ett extra lager som skapas mellan ett program och en fil. Strömmen används för att säkerställa smidig läs- och skrivoperationer till filen.

Strömmar används normalt vid läsning av data från stora filer. Genom att använda strömmar bryts data från stora filer upp i små bitar och skickas till strömmen. Dessa databitar kan sedan läsas från applikationen.

Anledningen till att dela upp det i små bitar är på grund av prestandaeffekten av att läsa en stor fil i en enda gång. Om du skulle läsa data från t.ex. en 100 MB fil i ett tillfälle, kan din applikation bara hänga och bli instabil. Det bästa tillvägagångssättet är då att använda strömmar för att dela upp filen i hanterbara bitar.

Så när en skrivoperation utförs på filen skrivs data som ska skrivas först till strömmen. Från strömmen skrivs sedan data till filen. Detsamma gäller läsoperationen. I läsoperationen överförs data först från filen till strömmen. Data läses sedan från applikationen via streamen. Låt oss titta på ett exempel på hur vi kan läsa och skriva med strömmar.

Typer av strömmar i C#

Alla strömklasser i C# härleds från abstract Stream klass i System.IO namnrymd. Varje typ riktar sig mot en annan datakälla men delar samma läs- och skrivmetoder. De vanligaste strömmarna listas nedan.

  • FileStream läser från och skriver till filer på disk, en byte eller ett block i taget.
  • Minnesström lagrar data i minnet istället för i en fil, vilket är användbart för tillfälliga buffertar.
  • BufferedStream omsluter en annan ström för att minska antalet långsamma disk- eller nätverksoperationer.
  • NetworkStream skickar och tar emot data över ett nätverksuttag.

För att arbeta med text tillhandahåller C# StreamReader och StreamWriter hjälpklasser, som omsluter en ström och behandlas i nästa avsnitt.

Stream Reader

Strömläsaren används för att läsa data från en fil med hjälp av strömmar. Data från filen läses först in i strömmen. Därefter läser applikationen data från strömmen.

För vårt exempel kommer vi att anta att vi har en fil i D-enheten som heter Exempel.txt. Filen kommer att vara en enkel textfil och ha 2 rader som visas nedan

  • Guru99 – .Net
  • Guru99-C#

För vårt exempel kommer vi att skapa en enkel konsolapplikation och arbeta med filströmmar

Låt oss titta på ett exempel på hur vi kan använda strömmar för att läsa data från en fil. Ange koden nedan i filen program.cs.

Stream Reader

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 Förklaring:-

  1. Först deklarerar vi ett strömläsarobjekt. Strömläsarobjektet används i C# för att definiera en ström från filen till applikationen. Data kommer att skickas från filen till strömmen när data läses från filen. Filen.OpenText används för att öppna filen "Example.txt" i skrivskyddat läge. Hanteraren till filen skickas sedan till strömläsarobjektet.
  2. Därefter definierar vi en temporär variabel 's' som kommer att användas för att läsa all data från filen.
  3. Vi använder sedan strömläsarmetoden ReadLine för att läsa varje rad från strömbufferten. När vi utför detta drift, kommer varje rad först att överföras från filen till bufferten. Sedan kommer strängraden att överföras från bufferten till variabeln 's'. Vi skriver sedan innehållet i strängen "s" till konsolen.

När ovanstående kod är inställd och projektet körs med Visual Studio, får du utdata nedan.

Produktion:-

Stream Reader

Från utgången kan du se att Stream Reader läser båda raderna från filen. Slutligen skickades raderna i strängen som lästes från strömmen till konsolen.

Stream Writer

Strömskrivaren används för att skriva data till en fil med hjälp av strömmar. Data från applikationen skrivs först in i strömmen. Därefter skriver strömmen data till filen. Låt oss titta på ett exempel på hur vi kan använda strömmar för att skriva data från en fil. Ange koden nedan i filen program.cs.

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

Code Förklaring:-

  1. Först deklarerar vi ett strömskrivarobjekt. Strömskrivarobjektet används i C# för att definiera en ström. Strömmen används sedan för att skriva data från applikationen till filen. Data kommer att skickas från applikationen till strömmen när data behöver skrivas. Kommandot File.AppendText används för att öppna filen "Example.txt" i ett tilläggsläge. Hanteraren till filen skickas sedan till strömskrivarobjektet.
  2. Vi använder strömskrivningsmetoden Writeline för att skriva raden "Guru99 – ASP.Net” till strömmen. Från strömmen kommer raden sedan att skrivas till filen.
  3. Vi stänger sedan strömskrivaren efter att ha skrivit till filen. Det är normalt en god praxis att stänga filhanterare när filen inte längre behövs för skrivsyften.
  4. Slutligen läser vi innehållet i filen igen och skriver det till konsolloggen. Detta för att kontrollera om raden skrevs till filen.

När ovanstående kod är inställd och projektet körs med Visual Studio, får du utdata nedan.

Produktion:-

Stream Writer

Från utdata kan du se att raden "Guru99 – ASP.Net” har lagts till i filen. Alla tre textrader kan ses i konsolen.

Vanliga frågor

En ström är ett mellanlager mellan en applikation och en fil. Den delar upp stora filer i mindre bitar så att data kan läsas eller skrivas utan att hela filen laddas in i minnet.

StreamReader läser textdata från en fil via en ström. Fil.OpenText returnerar en StreamReader, och dess ReadLine-metod läser filen en rad i taget.

StreamWriter skriver textdata till en fil via en ström. File.AppendText returnerar en strömWriter, och dess WriteLine-metod skickar varje rad till filen.

Vanliga strömmar inkluderar FileStream för filer, MemoryStream för data i minnet, BufferedStream för buffring och NetworkStream för sockets. Alla härleds från abstract Stream-klass.

FileStream läser och skriver råa byte till en fil, medan StreamReader omsluter en ström för att läsa text som tecken och rader. StreamReader är enklare för textfiler.

AI-assistenter som GitHub Copilot autokompletterar StreamReader och StreamWriter kod, lägg till med hjälp av block för avyttring och generera filläsningsloopar från en kort kommentar.

Ja. AI-drivna verktyg genererar läs- och skrivmetoder för strömmar, föreslår buffring för stora filer och lägger till using-satser så att strömmar stängs på ett säkert sätt.

En using-sats stänger och raderar automatiskt strömmen när blocket slutar, även om ett fel uppstår. Detta frigör filreferensen och förhindrar resursläckor.

Sammanfatta detta inlägg med: