IRONSOFTWAREHOME
AKTUALNOŚCI DLA PROGRAMISTÓW

FileStream C# (Jak to działa dla programistów)

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Jacob Mellor
Updated: 23 kwietnia 2026

W tym artykułe skupimy się na klasie FileStream w języku C# oraz na tym, jak pomaga ona w wykonywaniu operacji odczytu i zapisu plików. Przeanalizujemy praktyczne przykłady, zrozumiemy, jak działa FileStream w swej istocie, i nauczymy się, jak efektywnie zarządzać danymi plików. Niniejszy przewodnik jest skierowany do osób, które dopiero zaczynają przygodę z obsługą plików w języku C#, dlatego język pozostanie przyjazny dla początkujących, a jednocześnie zawiera szczegółowe instrukcje dotyczące pracy z plikami w języku C# oraz wprowadzenie do biblioteki IronPDF.

Czym jest FileStream?

Klasa FileStream w języku C# umożliwia obsługę plików przy użyciu bajtów. Obsługuje operacje odczytu i zapisu plików, umożliwiając bezpośrednią interakcję z zawartością plików. Jest to szczególnie przydatne podczas pracy z plikami w zadaniach związanych z wejściem/wyjściem, zwłaszcza podczas operowania na tablicach bajtów.

Przykłady zastosowań FileStream

FileStream idealnie nadaje się do:

  • Odczytywanie i zapisywanie danych binarnych bezpośrednio z plików lub do plików.
  • Efektywna obsługa dużych plików.
  • Wykonywanie asynchronicznych operacji na plikach.
  • Zarządzanie zasobami systemowymi poprzez efektywne wykorzystanie pamięci.

Podstawowy przykład

Oto prosty przykład otwierania pliku, zapisywania danych, a następnie odczytywania ich za pomocą FileStream:

using System;
using System.IO;

public class Example
{
    public static void Main()
    {
        string path = "example.txt";
        
        // Creating a FileStream object to handle the file. The file handle is acquired here.
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
        {
            byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!");
            // Write data to file
            fileStream.Write(data, 0, data.Length);
        }
        
        // Read from the file
        using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
            string text = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine(text);
        }
    }
}

Ten przykład pokazuje tworzenie obiektu FileStream do obsługi operacji odczytu i zapisu plików. Klasa FileStream odczytuje i zapisuje bajty bezpośrednio, dzięki czemu nadaje się do obsługi dużych plików lub danych binarnych. Użyliśmy Encoding do konwersji między tekstem a bajtami.

Zapisywanie danych za pomocą FileStream

Aby zapisać dane do pliku, należy użyć metody Write. Oto przykład, który wyjaśnia, jak to działa bardziej szczegółowo:

using System;
using System.IO;

public class FileWriteExample
{
    public static void Main()
    {
        string path = "output.txt";
        
        // Creating a FileStream object to write data to the file
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
        {
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream.");
            int offset = 0;
            int count = buffer.Length;
            
            // Writing data to the file
            fileStream.Write(buffer, offset, count);
        }
    }
}

W tym kodzie konwertujemy ciąg znaków na tablicę bajtów przy użyciu kodowania UTF8. Metoda Write zapisuje tablicę bajtów do pliku, zaczynając od bieżącej pozycji (określonej przez offset) i zapisując określoną liczbę bajtów.

  • FileMode.Create tworzy nowy plik, nadpisując wszelkie istniejące pliki o tej samej nazwie.
  • FileAccess.Write przyznaje uprawnienia do zapisu w FileStream.

Odczytywanie danych za pomocą FileStream

Teraz przyjrzyjmy się, jak odczytywać dane z pliku za pomocą FileStream.

using System;
using System.IO;

public class FileReadExample
{
    public static void Main()
    {
        // File path
        string path = "output.txt";

        // File Stream Object
        using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
            // Output Stream
            string output = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine(output);
        }
    }
}

W tym przykładzie:

  • FileMode.Open otwiera istniejący plik.
  • Metoda Read odczytuje określoną liczbę bajtów (w zależności od rozmiaru bufora) i zapisuje je w buforze tablicy bajtów.
  • Używamy Encoding.UTF8.GetString, aby skonwertować dane bajtowe z powrotem na ciąg znaków.

Zarządzanie dostępem do plików za pomocą FileStream

Klasa FileStream kontroluje dostęp do plików, umożliwiając precyzyjne zarządzanie uchwytami plików i zasobami systemowymi. Podczas korzystania z FileStream, ważne jest, aby zapewnić poprawne zakończenie używania strumienia, albo poprzez ręczne wywołanie Close(), albo używając deklaracji using, która automatycznie zwalnia strumień.

Obsługa pozycji pliku

Za każdym razem, gdy odczytujesz lub zapisujesz plik, obiekt FileStream śledzi bieżącą pozycję w pliku. Dostęp do tej pozycji można uzyskać za pomocą właściwości Position:

fileStream.Position = 0; // Move to the beginning of the file

Wykorzystanie FileStream do operacji asynchronicznych

FileStream może być używany do asynchronicznych operacji odczytu i zapisu, poprawiając wydajność poprzez umożliwienie uruchamiania innych procesów podczas wykonywania operacji na plikach. Oto podstawowy przykład odczytu asynchronicznego:

using System;
using System.IO;
using System.Threading.Tasks;

public class AsyncReadExample
{
    public static async Task Main()
    {
        // Specified Path
        string path = "output.txt";
        
        using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, true))
        {
            byte[] buffer = new byte[1024];
            int bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length);
            string result = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead);
            Console.WriteLine(result);
        }
    }
}

Metoda ReadAsync odczytuje dane asynchronicznie. Parametry FileAccess.Read i FileMode.Open kontrolują sposób, w jaki plik jest dostępny.

Przykład obsługi wyjątków

Podczas pracy z FileStream obsługa wyjątków jest niezbędna, aby uniknąć błędów wykonania i właściwie zarządzać zasobami systemowymi. Oto wzorzec obsługi wyjątków podczas odczytu lub zapisu do plików:

using System;
using System.IO;

public class ExceptionHandlingExample
{
    public static void Main()
    {
        string path = "nonexistentfile.txt";
        
        try
        {
            using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                byte[] buffer = new byte[1024];
                int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
                Console.WriteLine("Bytes Read: " + bytesRead);
            }
        }
        catch (FileNotFoundException e)
        {
            Console.WriteLine($"Exception: {e.Message}");
        }
    }
}

Buforowanie i wydajność

Klasa FileStream zawiera mechanizm buforowania, który pozwala na szybsze działanie, zwłaszcza podczas pracy z dużymi plikami. Dzięki buforowi dane są tymczasowo przechowywane w pamięci, co zmniejsza potrzebę ciągłego dostępu do dysku.

using System;
using System.IO;

public class BufferingExample
{
    public static void Main()
    {
        string path = "bufferedfile.txt";
        byte[] data = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example.");
        
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough))
        {
            fileStream.Write(data, 0, data.Length);
        }
    }
}

Tutaj FileOptions.WriteThrough zapewnia, że dane są zapisywane bezpośrednio do pliku z pominięciem dodatkowego buforowania. Można jednak kontrolować rozmiar bufora w celu optymalizacji wydajności.

Przedstawiamy IronPDF

FileStream C# (Jak to działa dla programistów): Rysunek 1 - IronPDF: Biblioteka PDF dla C#

IronPDF to solidna biblioteka C# do tworzenia, edycji i manipulowania dokumentami PDF w aplikacjach .NET. Dzięki IronPDF programiści mogą generować pliki PDF z różnych źródeł, takich jak HTML, obrazy, a nawet zwykły tekst. Dzięki funkcjom takim jak znak wodny, scałanie, dzielenie i ochrona hasłem, IronPDF idealnie nadaje się do aplikacji internetowych i desktopowych, zapewniając precyzyjną kontrolę nad wynikami w formacie PDF.

IronPDF z FileStream

Oto przykład generowania pliku PDF przy użyciu IronPDF i zapisywania go w strumieniu FileStream. Pokazuje to, w jaki sposób IronPDF płynnie integruje się z FileStream, umożliwiając programistom programowe sterowanie tworzeniem i zapisywaniem plików PDF.

using System;
using System.IO;
using IronPdf;

public class IronPDFExample
{
    public static void Main()
    {
        // Define the file path
        string path = "output.pdf";
        
        // Create an HTML string that we want to convert to PDF
        var htmlContent = "<h1>IronPDF Example</h1><p>This PDF was generated using IronPDF and saved with FileStream.</p>";
        
        // Initialize IronPDF's ChromePdfRenderer to render HTML as PDF
        var renderer = new ChromePdfRenderer();
        
        // Generate the PDF from the HTML string
        var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent);
        
        // Use FileStream to save the generated PDF
        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write))
        {
            pdfDocument.SaveAs(fileStream);
        }
        
        Console.WriteLine("PDF created and saved successfully.");
    }
}

Wnioski

FileStream C# (Jak to działa dla programistów): Rysunek 2 - Strona licencyjna IronPDF

Klasa FileStream w języku C# oferuje zaawansowane funkcje do zarządzania wejściem i wyjściem plików. Pozwala to programistom na wydajne odczytywanie i zapisywanie danych, kontrolowanie bieżącej pozycji w pliku oraz pracę asynchroniczną dzięki zrozumieniu, w jaki sposób współpracują ze sobą tablice bajtów, ścieżki plików i obsługa strumieni. Wykorzystanie FileStream w połączeniu z IronPDF zapewnia programistom elastyczność w zakresie efektywnej obsługi plików PDF w aplikacjach .NET. Niezależnie od tego, czy generujesz raporty, zapisujesz pliki, czy obsługujesz treści dynamiczne, ta kombinacja zapewnia precyzyjną kontrolę nad tworzeniem i przechowywaniem dokumentów PDF.

IronPDF oferuje bezpłatną wersję próbną oraz $999 opłatę licencyjną, co czyni z niego konkurencyjne rozwiązanie dla profesjonalnych potrzeb generowania PDF.

Jacob Mellor, Dyrektor Technologiczny @ Team Iron
Dyrektor ds. technologii

Jacob Mellor jest Chief Technology Officer w Iron Software i wizjonerskim inżynierem, pionierem technologii C# PDF. Jako pierwotny deweloper głównej bazy kodowej Iron Software, kształtuje architekturę produktów firmy od jej początku, przekształcając ją wspólnie z CEO Cameron Rimington w firmę liczącą ponad 50 osób, obsługującą NASA, Teslę i światowe agencje rządowe.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta