Laden...

[Gelöst] Mit dem StreamReader mehrere Dateien gleichzeitig einlesen

Erstellt von c#atriga vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.406 Views
C
c#atriga Themenstarter:in
34 Beiträge seit 2018
vor 5 Jahren
[Gelöst] Mit dem StreamReader mehrere Dateien gleichzeitig einlesen

Versuche via Streamreader mehrere Dateien gleichzeitig einzulesen aber er liest nur die erste Datei ein.

Kann ich für die zweite nicht die gleiche Instanz nutzen? Muss ich eine neue erstellen?

Besten Dank

string datei = @"C:\Users\User\Desktop\Programme\anfang.txt";
			StreamReader streamreader = new StreamReader(datei);

			while (!streamreader.EndOfStream)
			{
				Console.WriteLine(streamreader.ReadLine());
			}
			datei = @"C:\Users\User\Desktop\Programme\ende.txt";

			while (!streamreader.EndOfStream)
			{
				
				Console.WriteLine(streamreader.ReadLine());
			}
			streamreader.Close();

			Console.ReadKey();
2.079 Beiträge seit 2012
vor 5 Jahren

Kurz und knapp: Nein, geht nicht

Ich würde mir da auch keinen Kopf drum machen, der Performance-Vorteil (wenn Du das erreichen willst), dürfte derart winzig sein, dass es den Aufwand, mehrere Streams zu managen, völlig irrational hoch erscheinen lässt.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

C
c#atriga Themenstarter:in
34 Beiträge seit 2018
vor 5 Jahren

Danke für die Antwort.

Gibt es noch einen eleganteren Weg zwei txt Dateien einzulesen als zwei Instanzen von Streamreader zu nutzen?

2.079 Beiträge seit 2012
vor 5 Jahren

Kommt drauf an, was Du machen willst.

Aber schau dir Mal die File-Klasse an, die hat einige nützliche statische Methoden.
Die macht das am Ende aber genauso, nur eben schon fertig Implementiert.

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

T
2.224 Beiträge seit 2008
vor 5 Jahren

Wie Palladin007 schreibt ist hier eher die File Klasse mehr für dich als die StreamReader.
Die StreamReader können auch immer nur eine Datenquelle verwenden und lesen.
Du musst dir einen StreamReader eben so vorstellen, dass er einen Datenstrom von Anfang bis Ende lesen soll.
Es ist einfacher uns sauberer eine neue Instanz anzulegen als eine vorherige wieder zuverwenden.

Die File Klasse mit ihren Read Methoden dürfte dir das Handling beim Datei lesen einfacher machen.
Ebenfalls solltest du dir in dem Zuge auch die Write Methoden anschauen.
Dann hast du auch gleich eine einfache Basis zum schreiben von Dateien.
Später kannst du dir dann den StreamWriter anschauen um das schreiben selbst zu implementieren.
Gerade beim lesen/schreiben von großen Dateien(1+ GB) wirst du die Klassen brauchen wenn du dir den Speicher nicht vollschaufeln willst.
Den die File Klassen Methoden liefern dir immer den gesamten Inhalt in einem Rutsch, was bei kleinen Dateien okay ist aber gerade bei großen Brocken dann zu hohen Speicherverbrauch führt.

Link:
https://msdn.microsoft.com/de-de/library/system.io.file(v=vs.110).aspx

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.