DATOTEKE using System IO Tekstovne datoteke Lahko ustvarimo

  • Slides: 20
Download presentation
DATOTEKE • • using System. IO; Tekstovne datoteke: – Lahko ustvarimo z Beležnico –

DATOTEKE • • using System. IO; Tekstovne datoteke: – Lahko ustvarimo z Beležnico – Vsebina razdeljena v vrstice – Podobno kot pri branju s tipkovnice in pisanju na ukazno konzolo • Branje / pisanje • Datotečna spremenljivka (npr. dat. Vhod. . . ). Nad to spremenjlivko izvajamo metode (kot beremo z metodo Read. Line z System. Console). . . recimo dat. Vhod. Read. Line() Povezava z dejansko datoteko (c: bla. txt) • Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Ustvarimo datoteko • File. Create. Text(niz) – File. Create. Text("bla. dat"); – File. Create.

Ustvarimo datoteko • File. Create. Text(niz) – File. Create. Text("bla. dat"); – File. Create. Text("bla. txt"); – Ustvarimo novo, prazno datoteko. • Pozor: – Če datoteka že obstaja, s tem izgubimo staro vsebino! • Niz opisuje ime datoteke: – Relativno (glede na imenik, kjer se program izvaja): Ø Bla. dat Ø datotekeblo. txt – Absolutno (polno ime datoteke) Ø C: tempbla. txt Ø D: podatki2008januarprvi. Teden. dat Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Zgled using System; using System. IO; public class Program { public static void Main(string[]

Zgled using System; using System. IO; public class Program { public static void Main(string[] args) { File. Create. Text("Mojadatoteka. txt"); File. Create. Text("C: bla. txt"); File. Create. Text("C: imenikb. txt"); } } Težave! Morebitne težave tudi tu! Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Odpravljanje težav - ime • Ime datoteke: – "C: \bla. txt" – "C: \imenik\b.

Odpravljanje težav - ime • Ime datoteke: – "C: \bla. txt" – "C: \imenik\b. txt" • Poseben zapis niza – @"C: bla. txt" – @"C: imenikb. txt" • Znak @ pred nizom pove, da je potrebno vse znake v nizu jemati "dobesedno" • Velja v splošnem, vendar praviloma uporabljamo le pri nizih z imeni datotek Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Zgled - popravljen using System; using System. IO; public class Program { public static

Zgled - popravljen using System; using System. IO; public class Program { public static void Main(string[] args) { File. Create. Text("Mojadatoteka. txt"); File. Create. Text(@"C: bla. txt"); File. Create. Text("C: \imenik\b. txt"); } } Morebitne težave – če imenika ni! Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Imenik mora obstajati vnaprej Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Obstoj datoteke • • Metoda Create. Text vedno ustvari novo, prazno datoteko Če datoteka

Obstoj datoteke • • Metoda Create. Text vedno ustvari novo, prazno datoteko Če datoteka obstaja že od prej, izgubimo staro vsebino Preverimo, če datoteka že obstaja File. Exists(ime) – True: datoteka ime že obstaja – False: datoteke ime ni Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Ustvari datoteko, če je ni using System; using System. IO; public class Program {

Ustvari datoteko, če je ni using System; using System. IO; public class Program { public static void Main(string[] args) { Console. Write("Ime datoteke: "); string ime = Console. Read. Line(); if (File. Exists(ime)) { Console. Write. Line("Datoteka " + ime + " že obstaja!"); } else { File. Create. Text(ime); Console. Write. Line("Datoteko " + ime + " smo naredili!"); } } } Console. Read. Line(); Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Pisanje na datoteko • Datoteke na disku povežemo s podatkovnimi tokovi – Podatkovni tok

Pisanje na datoteko • Datoteke na disku povežemo s podatkovnimi tokovi – Podatkovni tok za pisanje (na datoteko) Stream. Writer – Podatkovni tok za branje z datoteke: Stream. Reader • Create. Text vrne oznako podatkovnega toka • Zgled – Stream. Writer dat. Za. Pisanje; – dat. Za. Pisanje = File. Create. Text("tu. Pisem. txt"); • Pisanje – Write. Line(niz) – Enako kot pri pisanju na konzolo – dat. Za. Pisanje. Write. Line("Nekaj napišimo na datoteko"); Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Zgled public static void Main(string[] args) { Console. Write("Ime datoteke: "); string ime. Datoteke

Zgled public static void Main(string[] args) { Console. Write("Ime datoteke: "); string ime. Datoteke = Console. Read. Line(); Stream. Writer oznaka; oznaka = File. Create. Text(ime. Datoteke); oznaka. Write. Line("Nekaj smo" + " napisali na datoteko!"); } Težava: Ko izvedemo program, je datoteka prazna! Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Close() • • Podatkovni tok je potrebno zapreti Medpomnilnik Hitrejše izvajanje Na koncu izprazniti

Close() • • Podatkovni tok je potrebno zapreti Medpomnilnik Hitrejše izvajanje Na koncu izprazniti – Close Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Zgled - popravljen public static void Main(string[] args) { Console. Write("Ime datoteke: "); string

Zgled - popravljen public static void Main(string[] args) { Console. Write("Ime datoteke: "); string ime. Datoteke = Console. Read. Line(); Stream. Writer oznaka; oznaka = File. Create. Text(ime. Datoteke); oznaka. Write. Line("Nekaj smo" + " napisali na datoteko!"); oznaka. Close(); } Datoteka ni več prazna! Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Zgled: 100 vrstic • Napišimo sedaj program, ki bo v datoteko Sto. Vrstic. txt

Zgled: 100 vrstic • Napišimo sedaj program, ki bo v datoteko Sto. Vrstic. txt zapisal 100 vrstic, denimo takih: 1. vrstica, 2. vrstica, . . . , 100. vrstica • Naloga je enostavna: – Ustvarimo datoteko Sto. Vrstic. txt in jo poveženo z pisalnim podatkovnim tokom – V zanki izpišemo števec in besedilo ". vrstica" • Nato. . . – Nič! To je vse. public static void Main(string[] args) { Stream. Writer oznaka; oznaka = File. Create. Text(@"c: tempSto. Vrstic. txt"); for (int i = 1; i <= 100; i++) { oznaka. Write. Line(i + ". vrstica"); } } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

100 vrstic Konec manjka! Pozabljen Close()! Fakulteta za matematiko in fiziko http: //up. fmf.

100 vrstic Konec manjka! Pozabljen Close()! Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Branje • Tok za branje – Stream. Reader • Datoteko odpremo za branje –

Branje • Tok za branje – Stream. Reader • Datoteko odpremo za branje – Mora že obstajati! Ø metoda Open. Text Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Izpis datoteke public static void Izpis. Datoteke(string ime) { Console. Write. Line("Na datoteki "

Izpis datoteke public static void Izpis. Datoteke(string ime) { Console. Write. Line("Na datoteki " + ime + " piše: nnn"); // odpremo datoteko za branje Stream. Reader izh. Tok; izh. Tok = File. Open. Text(ime); // preberemo prvo vrstico in jo izpišemo na zaslon Console. Write. Line(izh. Tok. Read. Line()); // preberi z datoteke naslednji dve vrstici in ju izpiši na zaslon Console. Write. Line(izh. Tok. Read. Line()); // preberi preostale vrstice Console. Write. Line(izh. Tok. Read. To. End()); // zaprimo tok izh. Tok. Close(); } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Metodi Read. Line in Read. To. End • Ko odpremo tekstovno datoteko za branje:

Metodi Read. Line in Read. To. End • Ko odpremo tekstovno datoteko za branje: – Kazalec tekoče vrstice • Read. Line() – Prebere tekočo vrstico • Read. To. End() – Prebre tekočo vrstico in vse vrstice do konca datoteke • Obe metodi vrneta podatek tipa string. • Konec datoteke – Če vrstice ni več, metoda Read. Line() vrne vrednost null – Če izpišemo niz z vrednostju null, se izpiše kot prazen niz • Pozor! null != "" Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Zgled: izpiši celotno datoteko na zaslon public static void Izpis. Datoteke 2(string ime) {

Zgled: izpiši celotno datoteko na zaslon public static void Izpis. Datoteke 2(string ime) { Stream. Reader izh. Tok; izh. Tok = File. Open. Text(ime); // preberemo prvo vrstico string vrstica = izh. Tok. Read. Line(); while (vrstica != null) {// do konca datoteke Console. Write. Line(vrstica); vrstica = izh. Tok. Read. Line(); } // zaprimo tok izh. Tok. Close(); } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Branje po znakih • Metoda Read() – Vrne int – Koda znaka 1. public

Branje po znakih • Metoda Read() – Vrne int – Koda znaka 1. public static void Izpis. Datoteke. Po. Znakih(string ime) { 2. Stream. Reader s = File. Open. Text(ime); 3. int beri; 4. beri = s. Read(); 5. while (beri != -1) // konec datoteke 6. { 7. Console. Write((char)beri); 8. // izpisujemo ustrezne znake 9. beri = s. Read(); 10. } 11. s. Close(); 12. } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Iz vrstic v podatke • Read. Line() vrne podatke tipa string • Pretvoriti v

Iz vrstic v podatke • Read. Line() vrne podatke tipa string • Pretvoriti v število – int. Parse(niz) – double. Parse(niz) – Pogoj Ø V nizu (vrstici) samo to število • Vrstica: – 23 5 78 – Kako izluščiti vsa tri števila • Metoda Split Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.

Split(tab. Locil) string info = "matija; lokar; cesta na klanec 20 a; 4000; Kranj;

Split(tab. Locil) string info = "matija; lokar; cesta na klanec 20 a; 4000; Kranj; Slovenija"; string[] tab. Info; //dolocimo znake, ki predstavljajo locila med podatki char[] locila = {'; '}; // mi smo za locilo vzeli le ; tab. Info = info. Split(locila); for(int x = 0; x < tab. Info. Length; x++) { Console. Write. Line(tab. Info[x]); } Fakulteta za matematiko in fiziko http: //up. fmf. uni-lj. si Izvedbo projekta je omogočilo sofinanciranje Evropskega socialnega sklada Evropske unije in Ministrstva za šolstvo in šport.