C# Visual Studio 2013 Hogyan tudok egy meglévő txt fájlhoz hozzá írni + adatot és hogyan tudok átírni benne egy bizonyos sort?
StreamWriter s = new StreamWriter("asd.txt", true);
s.Write("ezt hozzáírjuk a fájlhoz");
s.Dispose();
s.Close();
A kulcsszó a true, ezzel jelzed, hogy a fájlhoz hozzáírni szeretnél és nem felülírni. A soros megoldását a readlne,writeline területén keresgéld (most nincs időm megoldani), de úgy kellene hogy megszámolod hány sor van, abból kivonsz egyet mert ugye az elsőt akkor nem számoljuk és az így kapott értéket kell beírni a fájl első sorába.
Ha csak hozzá kéne fűzni egy új sort, akkor így lehetne használni:
StreamWriter("sms.txt", true)
Ekkor a fájl végéhez fűzhetsz hozzá új sorokat, a régiek pedig megmaradnak (append-nek hívják).
Viszont neked módosítanod kell az első sort is. Ezért én úgy oldanám meg, hogy először egy StreamReader-rel beolvasnám az eredeti fájlt.
Egyrészt beolvasnám a sorok számát ReadLine-nak, aztán átkasztolnám int-té. Másrészt az SMS-eket beolvasnám vagy soronként ReadLine-nal egy tömbbe (List) vagy ReadToEnd-del egyetlen Stringbe.
Utána megnyitnám sima írásra StreamWriter-rel (úgy, ahogy próbálkoztál). Ekkor elveszik az adat a fájlból, de ez nem gond, mert ott van a memóriában.
Első lépésben megnövelném a sorokszámát, utána kiírnám a fájlba. Ezután kiírnám a korábbi SMS-eket (soronként ha tömbben vannak, egyben ha egy stringben vannak). Végül kiírnám új sorban az új SMS-t.
#1
Dispose után biztos le lehet zárni a fájlt (Close)?
Rég tanultam, de szerintem fordítva kéne (először Close, aztán Dispose).
Utánanéztem:
A Dispose-t meg sem kell hívni, mert a Close úgyis meghívja.
Inkább using-ba kéne rakni, mert így ha elszáll az írás, nem lesz meghívva a close (vagy dispose):
using (StreamWriter s = new StreamWriter("asd.txt", true))
{
s.Write("ezt hozzáírjuk a fájlhoz");
}
A using pedig megehívja a disposet automatikusan akkor is, ha a belsejeben exception jön.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!