Kezdőoldal » Számítástechnika » Programozás » C# Visual Studio 2013 Hogyan...

C# Visual Studio 2013 Hogyan tudok egy meglévő txt fájlhoz hozzá írni + adatot és hogyan tudok átírni benne egy bizonyos sort?

Figyelt kérdés
Próbálok felkészülni az októberi érettségire és csinálgatom az eddigi érettségi feladatokat, de elég alap hiányosságaim vannak sajnos C#ból. A 2008-as májusi érettségi prog feladatában(SMS) az utolsó előtti az ,hogy vigyünk fel + 1 sms-t a txt fájlba de megpróbáltam simán StreamWriter("sms.txt")-vel de eltűnt belőle minden adat. A másik ,hogy az első sorban a sorok száma található és ha hozzá írok még egy sort akkor azt is kéne valahogy változtatni de eddig sajnos nem találtam meg a megoldást. Előre is köszönöm.

2014. szept. 10. 10:20
 1/5 anonim ***** válasza:

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.

2014. szept. 10. 10:32
Hasznos számodra ez a válasz?
 2/5 anonim ***** válasza:

Ha csak hozzá kéne fűzni egy új sort, akkor így lehetne használni:

[link]

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.

2014. szept. 10. 10:37
Hasznos számodra ez a válasz?
 3/5 anonim ***** válasza:

#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:

[link]


A Dispose-t meg sem kell hívni, mert a Close úgyis meghívja.

2014. szept. 10. 10:41
Hasznos számodra ez a válasz?
 4/5 anonim ***** válasza:
Tudom hogy nem szükséges, de én mindig odaírom...nemtom, lehet megszokás :D
2014. szept. 10. 10:44
Hasznos számodra ez a válasz?
 5/5 anonim ***** válasza:

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.

2014. szept. 10. 13:04
Hasznos számodra ez a válasz?

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!