Odczyt / Zapis do pliku *.txt

0

Cześć,

Tworzę prostą aplikację do losowania z danymi pobranymi z pliku *.txt bez powtórzeń.
Mam pobieranie, np. nazwiska z pliku, wyświetlanie etc, ale gdy chce zwrócić tablicę bez tego jednego nazwiska to dzieje się dziwna rzecz.
Wszystkie nazwiska wprowadzane są do tabeli, na której operuję.
Oczywiście wcześniej mam polecenie, które czyści cały plik *.txt
W pliku mam cztery nazwiska:
Kowalski
Nowak
Kowalczyk
Nowacki
Po wylosowaniu, np. Kowalskiego do pliku wraca tylko jedno nazwisko - Nowacki, a nie trzy...

Fragment kodu, który powinien zwracać nazwiska:
for (int x = 0; x < i; x++)
{
if(ArrayS[x] != ArrayS[ResultRandomS])
{
File.WriteAllText(@"C:\Users\User\Desktop\Losowanie\WinFormsApp1\Losowanie\Nazwiska.txt", ArrayS[x]);
}
}

1

WriteAllText() nadpisuje to co było ostatnim wpisem. Ty potrzebujesz użyć AppendText().

EDIT
Jeśli mogę zaproponować to dobrze było by stworzyć sobie tekst jaki chcesz zapisać przed zapisem. Z plikami różnie bywa jeśli chodzi o dostęp. Będziesz miał więcej danych, pętla będzie dłuższa i już masz prawdopodobieństwo, że sypnie ci access denied.
Skorzystaj ze StringBuilder

StrinBuilder sb = new StringBuilder();
for (int x = 0; x < i; x++)
{
    if(ArrayS[x] != ArrayS[ResultRandomS])
    {
        sb.Append(ArrayS[x]);
    }
}
File.WriteAllText(@"C:\Users\User\Desktop\Losowanie\WinFormsApp1\Losowanie\Nazwiska.txt", sb.ToString());
0

Dziękuję bardzo za pomoc, ale jest jeszcze jedna kwestia. Po losowaniu wszystkie nazwiska są obok siebie, a nie jeden pod drugim...

0
sb.Append(ArrayS[x] + Environment.NewLine);

Pamiętaj, nawet jeśli już będziesz programował 10-15 lat to i tak będziesz Googlował. Naucz się tego nawyku już dziś ✌

0

Lepiej AppendLine uzyc

0

Ja nie mam dobrych doświadczeń z pracą na plikach. Szczególnie na Windows. Uczulam autora na ewentualne problemy. Dużo zmian nie będzie musiał robić jakby chciał wrócić do bezpośredniego zapisywania do pliku ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1