Klasa Environment

Nalazi se u prostoru imena System.IO. Obezbeđuje informacije o okruženju i platformi na kojoj radimo. Property CurrentDirectory  omogućava čitanje i setovanje tekućeg foldera tj. foldera iz koga proces startuje. Inicijalno to je folder gde se nalazi exe fajl aplikacija. Korišćenjem set dela propertija moguće je za tekući folder postaviti bilo koji drugi folder. Metoda GetLogicalDrives klase Environmernt daje spisak svih drajvova instaliranih na sistemu.

  

Klasa Path

Ovo klasa se koristi za izvršavanje operacija nad stringovima koji sadrže informacije o fajlovima i folderima. Metoda Combine kombinuje dva stringa koja predstavljaju putanju na fajl sistemu i kreira novu putanju. Metoda GetDirectoryName daje informaciju o folderu za specificirani string, dok metoda GetFileName daje informacije o fajlu za specificirani string. Ilustracija upotrebe metoda klase Path je prikazana u nastsvku.

string path1 =@ "c:\temp";
string path2 = @"subdir\file.txt";
string combination = Path.Combine(path1, path2);
string fileName = @"C:\mydir\myfile.ext";
string result = Path.GetFileName(fileName);
string result = Path. GetDirectoryName(fileName);

  

Klasa DirectoryInfo

Klasa DirectoryInfo poseduje metode za kreiranje foldera, promenu radnog foldera, enumeraciju kroz fajlove i foldere. Konstruktoru ove klase se kao parametar prosleđuje putanja do tekućeg foldera. Property CreationTime daje vreme kreiranja foldera. Property Exist vraća logičku vrednost true ako folder postoji. Property FullName daje punu putanju do tekućeg foldera. Metoda GetDirectories daje spisak podfoldera tekućeg foldera.

  

Klasa FileInfo

Konstruktor klase FileInfo služi kao omotač za putanju do fajla. Klasa DirectoryInfo ima metodu GetFiles. Ova metoda vraća niz objekata klase FileInfo koji predstavljaju fajlove koji se nalaze unutar tekućeg foldera. Na slajdu je ilustrovan način prikazivanja svih fajlova unutar foldera C:\Windows. Klasa FileInfo ima veliki broj metoda i propertija za kreiranje fajlova, brisanje fajlova, dobijanje roditeljskog foldera itd. Za detaljnije informacije pogledati MSDN dokumentaciju.

  

Ulazno izlazni tokovi (strimovi) i fajlovi

Fajl je kolekcija podataka sačuvana na disku koja ima svoje ime i putunju (directory path). Kada se fajl otvori za čitanje ili upis on postaje strim (engl. stream). Treba napomenuti da strimovi uključuju i podatke koji dolaze sa mreže. Strimovi se takođe mogu kreirati u memoriji. Strimovi uključuju tri fundamentalne operacije: čitanje iz strima, upis u strim, pozicioniranje unutar strima. Većina klasa za rad sa ulazno-izlaznim operacijama nalazi se u prostoru imena System.IO.
Klasa FileStream

Nalazi se u prostoru imena System.IO i omogućava čitanje podataka iz fajla, upis podataka u fajl kao i pozicioniranje unutar fajla. Da bi se otvorio fajl ili kreirao novi fajl kreira se objekat klase FileStream.

U nastavku je predstavljen Konstruktor klase FileStream koji sadrži putanju do fajla sa kojim će objekat klase FileStrim da radi. Konstruktor uključuje enumeraciju FileMode koja kontroliše da li se radi o otvaranju već postojećeg fajla (Open), dodavanje podataka u postojeći fajl (Append) ili se radi o kreiranju novog fajla (Create). Enumeracija FileAccess ima vrednosti Read, ReadWrite i Write čime se označava da li je nad fajlom dozvoljena samo operacija čitanja ili upisa ili su dozvoljene obe operacije. Enumeracija FileShare definiše prava pristupa fajlu od strane više korisnika.

 

Primer upotrebe klase FileStrim

U radnom folderu koji predstavlja mesto gde se nalazi exe fajl naše aplikacije kreira sa fajl Test.txt. Definiše niz od 3 bajta pod nazivom niz i primenom metode Write objekat fs klase FileStream dva puta upisuje sve bajtove ovog niza u fajl. Da bi se isti strim iskoristio za čitanje iz fajla vrši se pozicioniranje na početak fajla primenom metode Seek. Primenom metode ReadByte čita se bajt po bajt iz fajla i svaki bajt se prikazuje na standardnom izlazu. Metoda ReadByte vraća vrednost -1 kada se stigne do kraja fajla.

string punoIme = Path.Combine(Directory.GetCurrentDirectory(), "Test.txt");
if(File.Exists(punoIme))
File.Delete(punoIme);
FileStream fs = new FileStream(punoIme,FileMode.Create,FileAccess.ReadWrite);
byte[] niz = {65, 66,67};
fs.Write(niz,0,niz.Length);
fs.Write(niz,0,niz.Length);
// pozicioniram se na pocetak da bi mogao da citam
fs.Seek(0,SeekOrigin.Begin);
// Citaj i verifikuj podatke
int b = 0;
for(int i = 0; i < fs.Length; i++)
{
     while( ( b = fs.ReadByte() ) != -1)
     {
          Console.WriteLine(b);   
     }
}
fs.Close();

  

Rad sa tekstualnim fajlovima

Ukoliko se zna da će fajl sa kojim se radi sadržati čisto tekstualne podatke onda se za čitanje iz takvog fajla koristi StreamReader klasa a za upis u fajl se koristi klasa StreamWriter. Klasa StreamReader se koristi za čitanje linija teksta iz standardnog tekstualnog fajla koji već postoji na fajl sistemu. Konstrukturu klase StreamReader se prosleđuje putanja fajla koji se čita. Klasa StreamReader ima metodu ReadLine() koja vraća pročitanu liniju teksta ili null ukoliko se došlo do kraja teksta. StreamReader ima metodu ReadToEnd() koja vraće string čiji je sadržaj identičan sadržaju tekstualnog fajla. Upotreba obe metode ilustrovana je u nastavku. Kada se završi rad sa fajlom potrebno je zatvoriti objekat klase StreamReader da bi se oslobodili sistemski resursi.

Konstruktor klase StreamWriter ima dva parametra, prvi parametar je putanja fajla u kome se vrši upisivanje a drugi parametar označava da li se radi o Append modu - true ili ne - oznaka false. Ukoliko specificirani fajl ne postoji on će biti kreiran. U nastavku je ilustrovana metoda WriteLine ove klase. Objekat klase StreamWriter je takođe potrebno zatvoriti u cilju oslobađanja sistemskih resursa.


StreamReader sr = new StreamReader(path);
string linija = null;
while ( ( linija = sr.ReadLine()) != null )
{
     Console.WriteLine(linija); 
}
sr.Close();

StreamReader sr  =  new StreamReader(@"C:\SETUP.LOG");
textBox1.Text = sr.ReadToEnd();
sr.Close(); // zatvara reader i oslobadja resurse koje je zauzeo

StreamWriter sw =  new StreamWriter (@"C:\SETUP.LOG",false);
                     sw.WriteLine("Log fajl linija 1");
                     sw.WriteLine("Log fajl linija 2");
                     sw.Close();

 


Upis binarnih podataka u fajl

Za upis binarnih podataka u fajl koristi se klasa BinaryWriter. BinaryWriter upisuje primitivne tipove podataka kao binarne vrednosti. U nastavku je ilustrovana procedura upisa binarnih podataka u fajl. Najpre se konstruktoru klase FileStream prosledi putanja fajla u kome se vrši upisivanje. Instancira se klase BinaryWriter pri čemu se konstruktoru klase prosleđuje objekat prethodno instancirane klase FileStream. Za upis podataka u fajl koristi se metoda write koja kao ulazni parametar prihvata različite tipove podataka. Na kraju treba osloboditi resurse tj. zatvoriti instancu klase BinaryWriter i instancu klase FileStream.

Najpre se instancira klasa FileStream:

FileStream fs = new FileStream(IME_FAJLA, FileMode.CreateNew);

Kreira se writer za fajl:

BinaryWriter w = new BinaryWriter(fs);
Poziva se metoda w.Write(vrednost);

podatak vrednost može biti različitog tipa treba zatvoriti writer tj. pozvati metodu:

w.Close();

treba zatvoriti izlazni tok:

fs.Close();

 

Čitanje binarnih podataka iz fajla

Za čitanje binarnih podataka iz fajla koristi se klasa BinaryReader. Najpre se definiše ulazni strim instanciranjem klase FileStream i specificiranjem fajla koji se čita. Zatim se definiše BinaryReader za strim tj. za fajl. U zavisnosti od tipa podataka u fajlu za čitanje podataka koriste se različite verzije Read metode : ReadInt32() , ReadByte itd. Na kraju se zatvara reader i zatvara se ulazni tok podataka.

Dodaj komentar Sviđa mi se - (0) Ne sviđa mi se - (0)    

  • Ulazno-izlazni tokovi 1
  • Ulazno-izlazni tokovi 2
  • Ulazno-izlazni tokovi 3