Feedback

Zeile in Datei finden

Sprache: C#

Methode um eine bestimmte Zeile mit bestimmten String-Inhalt zu finden. Beispiel: [code]int zeile_sqlserver = findeZeile("-sqlserver=")[/code]
public static int findeZeile(String settings_key)
        {
            int position = 0;

            try
            {
                int counter = 0;
                String temp = "";
                bool found = false;

                //Datei laden und schritt für Schritt lesen wo der String sich befindet
                StreamReader Reader1 = new StreamReader(EinstellungsSetPfad);
                StreamReader Reader2 = new StreamReader(EinstellungsSetPfad);

                while (Reader1.ReadLine() != null && found != true)
                {
                    temp = Reader2.ReadLine();

                    if (temp.Contains(settings_key))
                    {
                        position = counter;
                        found = true;
                    }
                    else
                    {
                        counter++;
                    }
                }
                //

                return position + 1;
            }
            catch (Exception ex)
            {
                return 0;
            }
        }
public static int findeZeile(String settings_key)
        {
            int position = 0;

            try
            {
                int counter = 0;
                String temp = "";
                bool found = false;

                //Datei laden und schritt für Schritt lesen wo der String sich befindet
                StreamReader Reader1 = new StreamReader(EinstellungsSetPfad);
                StreamReader Reader2 = new StreamReader(EinstellungsSetPfad);

                while (Reader1.ReadLine() != null && found != true)
                {
                    temp = Reader2.ReadLine();

                    if (temp.Contains(settings_key))
                    {
                        position = counter;
                        found = true;
                    }
                    else
                    {
                        counter++;
                    }
                }
                //

                return position + 1;
            }
            catch (Exception ex)
            {
                return 0;
            }
        }

1 Kommentar

  1. Ein paar Anmerkungen/Fragen zu deinem Snippet:
    1.) Warum 2 Streamreader? Einer reicht.
    2.) Es ist besser eine Exception weiter zu leiten. Einfach 0 zurück zu geben verbirgt nur den wahren Fehler und du bekomsmt ihn vielleicht nie mit.
    3.) Irgend etwas deutsch zu benennen finde ich sowieso seltsam, da es aus der Reihe tanzt. Noch seltsamer finde ich es eigene Dinge mal de mal en zu benennen.
    4.) Ich fände es besser eine Art LINQ-Methode dafür zu schreiben. Denn eine Datei komplett neu einzulesen, nur um einen Index zu finden ist i.d.R. sinnlos leistungsfressend. Mit einer Methode, die ein IEnumerable durchsucht könntest du die Datei mit File.ReadLines lesen und sobald ein Vorkommen gefunden wurde den Index zurück geben. Die weiteren Zeilen würden hier nicht mehr gelesen werden. So könnte die Methode aussehen:
    [code]public static int FindFirstMatch(this IEnumerable source, string settings_key)
    {
    int lnCount = -1;
    foreach (var ln in source)
    {
    ++lnCount;
    if (ln.Contains(settings_key))
    break;
    }
    return lnCount;
    }[/code]