Rad sa fajlovima i folderima Tokovi (strimovi) podataka Trajno čuvanje podataka na računaru...
Transcript of Rad sa fajlovima i folderima Tokovi (strimovi) podataka Trajno čuvanje podataka na računaru...
Osnove programiranja
Rad sa fajlovima i folderima
Sadržaj
Tokovi (strimovi) podataka Tekstualna datoteka Kreiranje izlaznog strima Upis podataka i zatvaranje strima Čitanje podataka iz fajla Putanja fajla Premeštanje, kopiranje i brisanje fajla Kreiranje, premeštanje, brisanje i izlistavanje
foldera
Tokovi (strimovi) podataka
Trajno čuvanje podataka na računaru ostvaruje se korišćenjem imenovanih objekata koji se nazivaju datoteke (fajlovi).
Osnovne operacije pri radu sa datotekama su čitanje iz datoteke i upis u nju.
Standardni ulaz obično čine podaci koji se unose sa tastature - omogućen metodom ReadLine.
Standardni izlaz se obično prikazuje na ekranu -omogućen metodom WriteLine.
Pored standardnog izlaza, postoji i standardni izlaz za greške.
Tokovi (strimovi) podataka
Moguće je izvršiti preusmeravanje (redirekciju) standardnog ulaza/izlaza tako da se, umesto sa tastature, karakteri čitaju iz neke datoteke (fajla) ili se upisuju u nju.
C# koristi takozvani tok ili strim (engl. stream) za modelovanje ulaza i izlaza.
Strim je veza između programa i izvora podataka. Podaci se mogu kretati u oba pravca, tako da se
strimovi mogu koristiti i za upis, i za čitanje odgovarajuće datoteke.
Tokovi (strimovi) podataka
Strim je uređena sekvenca bajtova poslata iz jedne aplikacije/ulaznog uređaja drugoj aplikaciji/izlaznom uređaju.
Strim - apstrakcija komunikacionog kanala podataka koji povezuje dva uređaja, tj. dve aplikacije.
Ovi bajtovi se linearno čitaju i pišu, jedan za drugim, i uvek pristižu istim redosledom kako su i poslati.
Svaki put kada se vrši čitanje/upis u odgovarajuću datoteku mora da se otvori strim do te datoteke, izvrši čitanje/upis, a onda se na kraju taj strim mora zatvoriti.
Postoje tekstualni i binarni.
Rad u konzoli – globalni prostor imena
Standardni upis/čitanje sa konzole je implementiran preko Console klase, metodama ReadLine i WriteLine, koje povezuju C# program sa korisnikom (using System). System.Console.WriteLine("Zdravo svima!"); je isto što i Console.WriteLine("Zdravo svima!");
Tekstualna datoteka
U .NET okruženju klase za rad sa strimovimalocirane su u prostoru imena System.IO.
Osnovne klase u prostoru imena System.IO su: Stream (apstraktna osnovna klasa za sve strimove u
.NET okruženju), BufferedStream, FileStream, MemoryStream, GZipStream i NetworkStream.
SM2
Slide 7
SM2 Potrebno je uneti, u globalnom prostoru imena System, komandu: using System.IO;Suzana Marković; 13.5.2019.
Tekstualni strimovi
Glavne klase za rad sa tekstualnim strimovima: TextReader i TextWriter Iz njih se nasleđuju klase StreamReader i
StreamWriter. Njihove najvažnije metode su:
ReadLine() – čita jedan red teksta i vraća string ReadToEnd() – čita ceo strim do kraja i vraća string Write() – upisuje string u strim WriteLine() – upisuje jednu liniju teksta u strim.
Kreiranje izlaznog strima
Kreiranje/otvaranje strima znači njegovo povezivanje sa izvorom podataka.
Strim se kreira korišćenjem ključne reči new. Kreiranjem se definiše i ime tekstualnog fajla
koji se na taj način otvara. StreamWriter sveska;sveska = new StreamWriter("test.txt");
Strim za upis podataka Izlazni fajl
SM1
Slide 9
SM1 Podrazumevano se (ako se drugačije ne naglasi) tekstualni fajl kreira u folderu gde je cs fajl ...Projects/ConsoleApplicationX/ConsoleApplicationX/bin/DebugSuzana Marković; 7.5.2018.
Upis podataka u strim i zatvaranje strima
StreamWriter sveska = new StreamWriter("test.txt");sveska.WriteLine("Pozdravni string");
IzrazpozivametoduWriteLine nastrimu sveska dabiseupisaotekst“Pozdravnistring”unutarfajlatest.txt.
sveska.Close();
Kadaprogramzavršisaupisompodatakaustrim,veomajevažnodaseoneksplicitnozatvorikorišćenjemmetodeClose.
Zatvaranje strima
Ukoliko se strim ne zatvori programski: program će verovatno moći da se završi, ali podaci
koje je korisnik bude uneo neće biti u fajlu; ako program koristi strim za povezivanje sa fajlom,
drugi programi neće moći da ga koriste; neće biti moguće promeniti ime fajlu ili njegovu
lokaciju; otvoren strim troši mali, ali značajan deo resursa
operativnog sistema.
Čitanje podataka iz fajla
Kod čitanja podataka iz fajla program će kreirati strim koji će obaviti to čitanje.
Koristi se strim StreamReader.
StreamReader knjiga = new StreamReader("test.txt"); string red = knjiga.ReadLine(); Console.WriteLine(red); knjiga.Close();
Strim za čitanje podataka
Čitanje celog fajla
StreamReader knjiga = new StreamReader("test.txt"); while (knjiga.EndOfStream == false) { string red = knjiga.ReadLine(); Console.WriteLine(red); } knjiga.Close();
Obratite pažnju na predstavu naših karakterističnih slova u datoteci!!!
Putanja fajla
Ako se prilikom otvaranja nekog fajla ne da lokacija foldera (kao što je dato u slučaju fajla test.txt), sistem tada podrazumeva da se fajl nalazi u istom folderu u kome se nalazi program koji se izvršava.
Da bi se koristio fajl u nekom drugom folderu (što je i najčešći slučaj), tada se imenu fajla moraju dodati i informacije o njegovoj putanji.
string putanja = @"C:\Test\test.txt";
Putanja fajla
string putanja;putanja = @"C:\Test\test.txt";StreamWriter sveska;sveska = new StreamWriter(putanja);sveska.WriteLine("Pozdravni string:");sveska.WriteLine("Zdravo svima!");sveska.Close();
Premeštanje, kopiranje i brisanje fajla
Premeštanje/kopiranje tekstualnog fajla sa jedne lokacije na drugu, kao i brisanje fajla, obavlja se posredstvom klase System.IO.File i odgovarajuće metode: Move - premeštanja fajla sa jedne na drugu putanju Copy – kopiranje fajla sa jedne na drugu putanju Delete – brisanje fajla
Kreiranje, premeštanje, brisanje i izlistavanje foldera
Kreiranje, premeštanje, brisanje i izlistavanjefoldera ostvaruje se posredstvom klaseSystem.IO.Directory i odgovarajuće metode: CreateDirectory - Kreiranje foldera Move - Premeštanje foldera Delete - Brisanje foldera Listanje svih fajlova u folderu obavlja se
posredstvom metode GetFiles i foreach petlje.
Kreiranje, premeštanje, brisanje i izlistavanje foldera
string putanja1 = @"C:\Test\Test1";System.IO.Directory.CreateDirectory(putanja1);string putanja2 = @"C:\Test\Test2";System.IO.Directory.CreateDirectory(putanja2);Console.WriteLine("Kreirani su folderi " + putanja1+ " i " +putanja2);
System.IO.Directory.CreateDirectory(@"C:\Test\Test3");string putanja1 = @"C:\Test\Test3";string putanja2 = @"C:\Test3";Directory.Move(putanja1, putanja2);Console.WriteLine("Folder " + putanja1 + " je premešten u " + putanja2);
string putanja = @"C:\Test3";Directory.Delete(putanja);Console.WriteLine("Folder " + putanja + " je obrisan! ");
string putanja = @"C:\Test\Test2";string[] fajlovi = Directory.GetFiles(putanja); foreach (string s in fajlovi) { Console.WriteLine(s); }
Premeštanje, kopiranje i brisanje fajla
string putanja1 = @"C:\Test\Test1\test1.txt";string putanja2 = @"C:\Test\Test2\test1.txt";System.IO.File.Move(putanja1, putanja2);Console.WriteLine("{0} fajl je premešten na {1}.", putanja1, putanja2);
string putanja1 = @"C:\Test\Test2\test1.txt";string putanja2 = @"C:\Test\Test1\test1.txt";File.Copy(putanja1, putanja2);Console.WriteLine("{0} fajl je kopiran na {1}.", putanja1, putanja2);
MOVE
COPY
string putanja = @"C:\Test\Test2\test1.txt";File.Delete(putanja);Console.WriteLine("{0} fajl je obrisan!", putanja);
DELETE