Entwickler-Ecke

IO, XML und Registry - eine Zeile aus jedem .txt File in Verzeichnis lesen


Namenlosnameless - Fr 07.05.10 18:23
Titel: eine Zeile aus jedem .txt File in Verzeichnis lesen
Hallo!

Ich habe 2 Fragen!

1) Ich habe einen Ordner mit ca 150 .txt's aus denen will ich immer eine bestimmte Zeile auslesen! Nur habe ich keine Ahnung wie ich es realisieren soll, dass jedes File ausgewählt wird! Ich habe den Begriff der Rekursion im Ohr, aber soweit ich weiß untersucht die ja jedes Unterverzeichnis mit => es wirk etwas übertrieben. theoretisch müsste es eigentlich auch mit einer foreach gehen! Allerdings sind meine bisherigen versuche kläglichst gescheitert!


2) Prinzipiel ist es kein Problem z.b. die 7 Zeile aus einem .txt File auszulesen!

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
StreamReader SR = new StreamReader(Pfad);

            for (int x = 1; x <= 6; x++)
            {
                SR.ReadLine();
            }
            string Zeile7 = SR.ReadLine();
            SR.Close();


Meine Frage: ist das wirklich das beste??

mfg Christoph


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 08.05.2010 um 11:35


jaenicke - Fr 07.05.10 18:34

Schau dir einmal die Klasse DirectoryInfo an, da gibt es die Methode GetFiles:
http://msdn.microsoft.com/de-de/library/system.io.directoryinfo.getfiles.aspx
Die liefert dir die Dateien in dem Verzeichnis zurück.

Dann noch nen foreach über die Dateien, fertig.

C#-Quelltext
1:
2:
foreach(FileInfo xy in MyFiles)
  ...


JüTho - Sa 08.05.10 10:50

Hallo,

da du nur die Dateinamen benötigst, kannst du Sebastians Vorschlag noch mit dem String-Array aus Directory.GetFiles vereinfachen.

Zu deiner Frage 2: Abgesehen davon, dass ich in C# eine Schleife immer beim Index 0 beginnen lassen würde und sich dadurch die Bedingung etwas ändert, gibt es faktisch keinen besseren Weg. (Da verzichte sogar ich auf mein bevorzugtes File.ReadAllLines.) Du willst die ersten 6 Zeilen überspringen; das geht nicht anders als durch Lesen und Ignorieren.

Gruß Jürgen


Kha - Sa 08.05.10 12:41

Ab .NET 4 ginge es noch etwas prägnanter: File.ReadLines(Pfad).ElementAt(6)
Mit ReadAllLines würde man damit unnötigerweise die gesamte Datei einlesen, aber ob das überhaupt eine Rolle spielen würde :nixweiss: ...
Ansonsten kann man am Code von user profile iconNamenlosnameless höchstens noch den fehlenden using-Block bemängeln :) .


Namenlosnameless - Do 13.05.10 10:58

.NET 4.0 Kann sowas?? Wie genial XD!
Ich habs eh am Computer! nur wollt ich dieses Projekt in VS 2008 schreiben weil ich das auf Deutsch habe und ich mir mitm English ein bissl schwer tu!