You are on page 1of 11

Strimovi i fajlovi

Pregled
 Tokovi (Streams)
 Klase za čitanje i upis
 Ulaz/Izlaz sa fajlovima
Tokovi (Streams)
 Zokovi su sredstvo za čitanje i upis bajtova iz i u skladišta
podataka
 Svi tokovi su izvedeni iz klase System.IO.Stream
 Osnovne operacije sa tokovima se: Read, Write, and Seek
 Odgovarajuća svojstva su: CanRead, CanWrite i
CanSeek
 Neki tokovi podržavaju baferovanje zbog unapređenja
performansi
 Metoda Flush prazni sve interne bafere jednog toka
 Metoda Close oslobađa sve resurse koje je tok zauzeo
 .NET Framework obezbeđuje sledeće klase za rad sa
tokovima
 NetworkStream, BufferedStream, MemoryStream,
FileStream, CryptoStream
Klase za čitanje i upis (Readers & Writers)
 Klase koje su izvedene iz klase
System.IO.Stream vrše ulaz/izlaz operacije nad
bajtovima
 Readers & Writers uzimaju druge tipove za ulaz i
izlaz i učitavaju ih ili upisuju u tokove ili stringove
 Klase BinaryReader i BinaryWriter čitaju i upisuju
primitivne tipove u tok
 Klase TextReader i TextWriter su apstraktne
klase koje implementiraju metode za čitanje i
upis karaktera
 Iz klasa TextReader i TextWriter su izvedene:
 StreamReader i StreamWriter, koje čitaju i
upisuju u tok
 StringReader i StringWriter, koje čitaju i
upisuju u string ili StringBuilder objekte
Ulaz/Izlaz sa fajlovima
 Klasa FileStream
 Klase File i FileInfo
 Preimer čitanja teksta
 Primer upisivanja teksta
 Klase Directory i DirectoryInfo
 FileSystemWatcher
Klasa FileStream
 Klasa FileStream se koristi i za čitanje podataka iz fajla i
za upis podataka u fajl
 Konstruktor klase FileStream sadrži sledeće parametre
 FileMode – Open, Append, Create
 FileAccess – Read, ReadWrite, Write
 FileShare – None, Read, ReadWrite, Write

FileStream f = new FileStream(name, FileMode.Open,


 Za proizvoljan pristup podacima
FileAccess.Read, u fajlu koristi se metoda
FileShare.Read);
Seek
 Određuje se pomeraj (offset) u bajtovima
 Pomeraj se određuje relativno u odnosu na referentnu
tačku: Begin, Current, End
Klase File i FileInfo
 File je klasa koja ima statičke metode za:
 Kreiranje (create), kopiranje (copy), brisanje
(delete), premeštanje (move) i otvaranje
(open) fajlova
 FileInfo je klasa koja sadrži iste metode kao i
klasa File, samo nisu statičke:
 Create, copy, delete, move, and open files
 Primer:
FileStream aStream = File.Create("foo.txt");
Primer čitanja teksta
 Čita tekst iz fajla i ispisuje ga na konzolu
//...
StreamReader sr = File.OpenText(FILE_NAME);
String input;
while ((input=sr.ReadLine())!=null) {
Console.WriteLine(input);
}
Console.WriteLine (
"The end of the stream has been reached.");
sr.Close();
//...
Primer upisivanja teksta u fajl
 Kreira fajl
 Upisuje podatke
 Zatvara fajl

//...
StreamWriter sw = File.CreateText("MyFile.txt");
sw.WriteLine ("This is my file");
sw.WriteLine (
"I can write ints {0} or floats {1}", 1, 4.2);
sw.Close();
//...
Klase Directory i DirectoryInfo
 Klasa Directory ima statičke metode za:
 Kreiranje, premeštanje i listanje članova
direktorijuma
 DirectoryInfo ima regularne metode za:
 Kreiranje, premeštanje i listanje članova
direktorijuma
 Primer:
 Listanje sadržaja trenutno aktivnog
direktorijuma:

DirectoryInfo dir = new DirectoryInfo(".");


foreach (FileInfo f in dir.GetFiles("*.cs")) {
String name = f.FullName; }
FileSystemWatcher
 FileSystemWatcher se koristi za nadgledanje fajl
sistema
 Kreiranje FileSystemWatcher objekta
FileSystemWatcher watcher = new FileSystemWatcher();
 Konfigurisanje
watcher.Path = args[0];
watcher.Filter = "*.txt";
watcher.NotifyFilter = NotifyFilters.FileName;
watcher.Renamed += new
RenamedEventHandler(OnRenamed);
 Početak nadgledanja

Obrada uhvaćenih događaja


watcher.EnableRaisingEvents = true;

public static void OnRenamed(object s, RenamedEventArgs e) {


Console.WriteLine("File: {0} renamed to {1}",
e.OldFullPath, e.FullPath); }

You might also like