C# Für jedes SelectedItems eine Zeile schreiben!

Nick_SMI

Ensign
Registriert
Sep. 2015
Beiträge
153
Hallo zusammen!

Ich möchte für jede gewählte Zeile eine Zeile in einer .txt Datei schreiben.

Doch im momentanen Code schreibt er lediglich die 1.Zeile!?


Kann einer weiterhelfen?
Gruß und danke im Voraus!

Code:
                System.IO.Directory.CreateDirectory(pathString);
                FileInfo FI = new FileInfo(pathString + "\\" + "VeNicht.txt");
                FileStream FS = FI.Create();
                FS.Close();

                foreach (object item in listeFahrzeuge.SelectedItems)
                {
                    FileStream fs = new FileStream(
                    pathString + "\\" + "VeNicht.txt", FileMode.Create);
                    StreamWriter sw = new StreamWriter(fs);
                    sw.WriteLine(listeFahrzeuge.SelectedItem);
                    sw.WriteLine('\n');
                    sw.Close();
                }
 
Du erstellst für jedes Item ein neuen Stream (wobei die alte Datei überschrieben wird) und schließt diesen dann wieder.

Stattdessen solltest du vor der Schleife einmal einen Stream erstellen und ihn nach der Schleife schließen.

Edit:
Außerdem sind deine erste 4 Zeilen nutzlos, da durch FileMode.Create automatisch die Datei erstellt wird.

Edit²:
Man kann deinen ganzen Code auch so zusammenfassen:
Code:
File.WriteAllText("file.txt", string.Join("\n", listBox.SelectedItems));
 
Zuletzt bearbeitet:
Ich hab dies nur zum Teil verstanden, könntest du dies mal umsetzten?
Gruß und danke! :)
 
Code:
            StreamWriter sw = new StreamWriter(pathString + "\\" + "VeNicht.txt");
            foreach (object item in listeFahrzeuge.SelectedItems)
            {
                sw.WriteLine(item);
            }
            sw.Close();


Den FileStream brauchst du nicht, auf eine Datei kann StreamWriter auch von sich aus zugreifen.

Außerdem ist deine Zeile
Code:
sw.WriteLine(listeFahrzeuge.SelectedItem)
falsch, da du somit nur auf das erste selektierte Item zugreifst, in meinem Code siehst du, wie es sein sollte.
 
Bagbag schrieb:
Code:
            StreamWriter sw = new StreamWriter(pathString + "\\" + "VeNicht.txt");
            foreach (object item in listeFahrzeuge.SelectedItems)
            {
                sw.WriteLine(item);
            }
            sw.Close();


Den FileStream brauchst du nicht, auf eine Datei kann StreamWriter auch von sich aus zugreifen.

Außerdem ist deine Zeile
Code:
sw.WriteLine(listeFahrzeuge.SelectedItem)
falsch, da du somit nur auf das erste selektierte Item zugreifst, in meinem Code siehst du, wie es sein sollte.

Super, es hat geklappt!!!
Vielen Dank! :)
 
Zurück
Oben