.NET-HILFE

FileStream C# (Wie es für Entwickler funktioniert)

Veröffentlicht 24. Oktober 2024
Teilen Sie:

Dieser Artikel konzentriert sich auf dieFileStream-Klasse in C# und wie es Ihnen hilft, Lese- und Schreibvorgänge auf Dateien durchzuführen. Wir werden praktische Beispiele untersuchen, verstehen, wie FileStream im Kern funktioniert, und lernen, wie man Dateidaten effizient verwaltet. Dieses Handbuch richtet sich an diejenigen, die neu im Umgang mit Dateien in C# sind. Die Sprache bleibt daher einsteigerfreundlich und bietet gleichzeitig detaillierte Anweisungen für die Arbeit mit Dateien in C# und eine Einführung in dieIronPDF-Bibliothek auch.

Was ist FileStream?

Die FileStream-Klasse in C# bietet eine Möglichkeit, Dateien mithilfe von Bytes zu verarbeiten. Es funktioniert mit Lese- und Schreiboperationen auf Dateien, so dass Sie direkt mit Dateiinhalten interagieren können. Dies ist besonders nützlich bei der Arbeit mit Dateien für Eingabe-/Ausgabeaufgaben, vor allem bei der Manipulation von Byte-Arrays.

FileStream Anwendungsfälle

FileStream ist ideal für:

  • Lesen und Schreiben von Binärdaten direkt aus oder in Dateien.
  • Effizienter Umgang mit großen Dateien.
  • Asynchrone Dateioperationen durchführen.
  • Verwaltung von Systemressourcen durch effiziente Nutzung des Speichers.

Grundlegendes Beispiel

Hier ist ein einfaches Beispiel, um eine Datei zu öffnen, Daten zu schreiben und sie dann mit FileStream zu lesen:

using System;
using System.IO;
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!");
        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);
    }
}
using System;
using System.IO;
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!");
        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);
    }
}
Imports System
Imports System.IO
Public Shared Sub Main()
	Dim path As String = "example.txt"
	' Creating a FileStream object to handle the file. The file handle is acquired here.
	Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write)
		Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!")
		fileStream.Write(data, 0, data.Length)
	End Using
	' Read from the file
	Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
		Dim buffer(1023) As Byte
		Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
		Dim text As String = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead)
		Console.WriteLine(text)
	End Using
End Sub
VB   C#

Dieses Beispiel zeigt, wie ein FileStream-Objekt erstellt wird, um Lese- und Schreibvorgänge von Dateien zu verarbeiten. Die Klasse FileStream liest und schreibt Bytes direkt, was sie für die Verarbeitung großer Dateien oder binärer Daten geeignet macht. Wir haben Encoding verwendet, um zwischen Text und Bytes zu konvertieren.

Schreiben von Daten mit FileStream

Um Daten in eine Datei zu schreiben, verwenden Sie die Methode Write. Hier ist ein Beispiel, das die Funktionsweise genauer erklärt:

using System;
using System.IO;
public static void Main()
{
    string path = "output.txt";
    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);
    }
}
using System;
using System.IO;
public static void Main()
{
    string path = "output.txt";
    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);
    }
}
Imports System
Imports System.IO
Public Shared Sub Main()
	Dim path As String = "output.txt"
	Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write)
		Dim buffer() As Byte = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream.")
		Dim offset As Integer = 0
		Dim count As Integer = buffer.Length
		' Writing data to the file
		fileStream.Write(buffer, offset, count)
	End Using
End Sub
VB   C#

In diesem Code konvertieren wir eine Zeichenkette in ein Byte-Array mit UTF8-Kodierung. Die Write-Methode schreibt das Byte-Array in die Datei, beginnend mit der aktuellen Position(bestimmt durch den Offset) und das Schreiben der angegebenen Anzahl von Bytes.

  • FileMode.Create erstellt eine neue Datei und überschreibt eine vorhandene Datei mit demselben Namen.
  • FileAccess.Write gewährt Schreibrechte für den FileStream.

Lesen von Daten mit FileStream

Lassen Sie uns nun untersuchen, wie man mit FileStream Daten aus einer Datei liest.

using System;
using System.IO;
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);
    }
}
using System;
using System.IO;
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);
    }
}
Imports System
Imports System.IO
Public Shared Sub Main()
	' File path
	Dim path As String = "output.txt"
	' File Stream Object
	Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
		Dim buffer(1023) As Byte
		Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
	' Output Stream
		Dim output As String = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead)
		Console.WriteLine(output)
	End Using
End Sub
VB   C#

In diesem Beispiel:

  • FileMode.Open öffnet eine vorhandene Datei.
  • Die Read-Methode liest eine bestimmte Anzahl von Bytes(basierend auf der Puffergröße) und speichert sie in einem Byte-Array-Puffer.
  • Wir verwenden Encoding.UTF8.GetString, um die Byte-Daten wieder in eine Zeichenkette zu konvertieren.

Dateizugriff mit FileStream verwalten

Die Klasse FileStream steuert den Zugriff auf Dateien und ermöglicht fein abgestimmte Dateihandles und die Verwaltung von Systemressourcen. Bei der Verwendung von FileStream muss unbedingt sichergestellt werden, dass der Stream nach der Verwendung ordnungsgemäß entsorgt wird, entweder durch den Aufruf von Close() manuell oder mit der Anweisung, die den Stream automatisch entsorgt.

Handhabung der Dateiposition

Jedes Mal, wenn Sie eine Datei lesen oder schreiben, merkt sich der FileStream die aktuelle Position innerhalb der Datei. Sie können auf diese Position mit der Eigenschaft Position zugreifen:

fileStream.Position = 0; // Move to the beginning of the file
fileStream.Position = 0; // Move to the beginning of the file
fileStream.Position = 0 ' Move to the beginning of the file
VB   C#

Verwendung von FileStream für asynchrone Operationen

FileStream kann für asynchrone Lese- und Schreibvorgänge verwendet werden, was die Leistung verbessert, da andere Prozesse laufen können, während die Dateioperationen ausgeführt werden. Hier ist ein einfaches Beispiel für asynchrones Lesen:

using System;
using System.IO;
using System.Threading.Tasks;
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);
    }
}
using System;
using System.IO;
using System.Threading.Tasks;
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);
    }
}
Imports System
Imports System.IO
Imports System.Threading.Tasks
Public Shared Async Function Main() As Task
	' Specified Path
	Dim path As String = "output.txt"
	Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, True)
		Dim buffer(1023) As Byte
		Dim bytesRead As Integer = Await fileStream.ReadAsync(buffer, 0, buffer.Length)
		Dim result As String = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead)
		Console.WriteLine(result)
	End Using
End Function
VB   C#

Die ReadAsync-Methode liest die Daten asynchron. Die Parameter FileAccess.Read und FileMode.Open steuern, wie auf die Datei zugegriffen wird.

Beispiel für die Behandlung von Ausnahmen

Bei der Arbeit mit FileStream ist der Umgang mit Ausnahmen wichtig, um Laufzeitfehler zu vermeiden und Systemressourcen richtig zu verwalten. Hier ist ein Muster für die Behandlung von Ausnahmen beim Lesen oder Schreiben von Dateien:

using System;
using System.IO;
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}");
    }
}
using System;
using System.IO;
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}");
    }
}
Imports System
Imports System.IO
Public Shared Sub Main()
	Dim path As String = "nonexistentfile.txt"
	Try
		Using fileStream As New FileStream(path, FileMode.Open, FileAccess.Read)
			Dim buffer(1023) As Byte
			Dim bytesRead As Integer = fileStream.Read(buffer, 0, buffer.Length)
			Console.WriteLine("Bytes Read: " & bytesRead)
		End Using
	Catch e As FileNotFoundException
		Console.WriteLine($"Exception: {e.Message}")
	End Try
End Sub
VB   C#

Pufferung und Leistung

Die Klasse FileStream enthält einen Pufferungsmechanismus, der eine schnellere Leistung ermöglicht, insbesondere bei der Arbeit mit großen Dateien. Mithilfe eines Puffers werden Daten vorübergehend im Arbeitsspeicher gespeichert, wodurch sich die Notwendigkeit eines ständigen Festplattenzugriffs verringert.

using System;
using System.IO;
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);
    }
}
using System;
using System.IO;
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);
    }
}
Imports System
Imports System.IO
Public Shared Sub Main()
	Dim path As String = "bufferedfile.txt"
	Dim data() As Byte = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example.")
	Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough)
		fileStream.Write(data, 0, data.Length)
	End Using
End Sub
VB   C#

Hier sorgt FileOptions.WriteThrough dafür, dass die Daten direkt in die Datei geschrieben werden, ohne zusätzliche Pufferung. Sie können jedoch die Puffergröße für die Leistungsoptimierung steuern.

Einführung in IronPDF

FileStream C#(Wie es für Entwickler funktioniert): Abbildung 1 - IronPDF: Die C# PDF-Bibliothek

IronPDF ist eine robuste C# PDF-Bibliothek zum Erstellen, Bearbeiten und Manipulieren von PDF-Dokumenten in .NET-Anwendungen. Entwickler könnenpDFs aus verschiedenen Eingaben wie HTML generierenbilder und sogar Rohtext mit IronPDF. Mit Funktionen wie Wasserzeichen, Zusammenführen, Aufteilen und Passwortschutz ist IronPDF ideal für Web- und Desktop-Anwendungen mit präziser Kontrolle über die PDF-Ausgabe.

IronPDF mit FileStream

Hier ein Beispiel für die Erstellung einer PDF-Datei mit IronPDF und deren Speicherung in einem FileStream. Es wird gezeigt, wie IronPDF nahtlos in FileStream integriert werden kann, so dass Entwickler die Erstellung und Speicherung von PDFs programmatisch steuern können.

using System;
using System.IO;
using IronPdf;
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.");
}
using System;
using System.IO;
using IronPdf;
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.");
}
Imports System
Imports System.IO
Imports IronPdf
Public Shared Sub Main()
	' Define the file path
	Dim path As String = "output.pdf"
	' Create an HTML string that we want to convert to PDF
	Dim 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
	Dim renderer = New ChromePdfRenderer()
	' Generate the PDF from the HTML string
	Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
	' Use FileStream to save the generated PDF
	Using fileStream As New FileStream(path, FileMode.Create, FileAccess.Write)
		pdfDocument.SaveAs(fileStream)
	End Using
	Console.WriteLine("PDF created and saved successfully.")
End Sub
VB   C#

Schlussfolgerung

FileStream C#(Wie es für Entwickler funktioniert): Abbildung 2 - IronPDF-Lizenzierungsseite

Die FileStream-Klasse in C# bietet leistungsstarke Funktionen für die Verwaltung von Dateieingaben und -ausgaben. Es ermöglicht Entwicklern, Daten effizient zu lesen und zu schreiben, die aktuelle Position innerhalb einer Datei zu kontrollieren und asynchron zu arbeiten, indem sie verstehen, wie Byte-Arrays, Dateipfade und Stream-Handling zusammenarbeiten. Die Verwendung von FileStream in Kombination mit IronPDF bietet Entwicklern die Flexibilität, PDFs innerhalb von .NET-Anwendungen effizient zu verarbeiten. Ganz gleich, ob Sie Berichte erstellen, Dateien speichern oder mit dynamischen Inhalten arbeiten, diese Kombination bietet eine gute Kontrolle über die Erstellung und Speicherung von PDF-Dokumenten.

IronPDF bietet einekostenloser Testund eine $749 Lizenzgebühr, was es zu einer wettbewerbsfähigen Lösung für professionelle PDF-Erstellungsanforderungen macht.

< PREVIOUS
C# Initialize List (Wie es für Entwickler funktioniert)
NÄCHSTES >
C# Init Keyword (Wie es für Entwickler funktioniert)

Sind Sie bereit, loszulegen? Version: 2024.12 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,810,873 Lizenzen anzeigen >