Eine Datei zeilenweise in C # lesen

Ich versuche, einige Textdateien zu lesen, in denen jede Zeile verarbeitet werden muss. Im Moment benutze ich nur einen StreamReader und lese dann jede Zeile einzeln.

Ich frage mich, ob es eine effizientere Möglichkeit gibt (in Bezug auf LoC und Lesbarkeit), dies mit LINQ zu tun, ohne die betriebliche Effizienz zu beeinträchtigen. In den Beispielen, die ich gesehen habe, wird die gesamte Datei in den Speicher geladen und dann verarbeitet. In diesem Fall glaube ich jedoch nicht, dass dies sehr effizient wäre. Im ersten Beispiel können die Dateien bis zu 50 KB groß werden, und im zweiten Beispiel müssen nicht alle Zeilen der Datei gelesen werden (die Größe beträgt normalerweise <10 KB).

Man könnte argumentieren, dass es heutzutage für diese kleinen Dateien nicht wirklich wichtig ist, aber ich glaube, dass ein solcher Ansatz zu ineffizientem Code führt.

Erstes Beispiel:

// Open file
using(var file = System.IO.File.OpenText(_LstFilename))
{
    // Read file
    while (!file.EndOfStream)
    {
        String line = file.ReadLine();

        // Ignore empty lines
        if (line.Length > 0)
        {
            // Create addon
            T addon = new T();
            addon.Load(line, _BaseDir);

            // Add to collection
            collection.Add(addon);
        }
    }
}

Zweites Beispiel:

// Open file
using (var file = System.IO.File.OpenText(datFile))
{
    // Compile regexs
    Regex nameRegex = new Regex("IDENTIFY (.*)");

    while (!file.EndOfStream)
    {
        String line = file.ReadLine();

        // Check name
        Match m = nameRegex.Match(line);
        if (m.Success)
        {
            _Name = m.Groups[1].Value;

            // Remove me when other values are read
            break;
        }
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage