I/0 in c# cu StreamReader si StreamWriter-Intermediari
Scris de d3light
In continuare voi incerca sa prezint tehnica realizari operatiunilor de I/0 pentru c# folosint clasele “StreamReader” si “StreamWriter”:
Acest tutorial este destinat utilizatorilor care au ceva cunostinte de baza despre C#…
Pentru realizarea operatiunilor de I/0 pe c# este necesar,pentru usurarea operatiunii,includerea namespaceului:
System.IO
Clasa care permite citirea unui fisier este:
StreamReader
Practic pentru a citi un fisier trebuie creata o instanta a clasei “StreamReader”.In exemplul meu instanta(”copia”) clasei o sa o numim “citeste_fisier”.
StreamReader citeste_fisier=new StreamReader(
);
Exceptiile generate de constructor sunt urmatoarele:
ArgumentException
calea este “goala” un string gol (”").ArgumentNullException
calea este o referinta catre null.FileNotFoundException
Fisierul nu este de gasit.DirectoryNotFoundException
Directorul care contine fisierul este de negasit.IOException
Locatia este incorect scrisa.
Dupa ce am initializat o instanta a clasei “StreamReader” putem trece la operatiuni de citire asupra fisierului.
Metodele care se ocupa cu aceste operatiuni(cele mai folosite) sunt:
Read
Returneaza un caracter din fisier,iar “curosrul” avanseaza la urmatorul caracter.(Daca s-a atins sfarsitul fisierului returneaza NULL)
ReadToEnd
Returneaza tot continutul unui fisier sub forma de string.
ReadLine
Returneaza o linie cu date din fisier,iar “curosrul” avanseaza la urmatoarea linie.(Daca s-a atins sfarsitul fisierului returneaza NULL)
Exemplu de folosire:
string continut_fisier;
StreamReader citeste_fisier=new StreamReader(”C:\Windows\ODBC.INI”);
//”se observa ca la calea specificata a fisierului destinat deschiderii sunt folosite “\” si nu “” acest lucru este realizat pentru a nu se confunda
//cu macrourile din limbajele de c…cum ar fi “t”,”n” etc…in felul acesta “\”=”"
//”imagazinam” in “continut_fisier” continutul fisierului “C:WindowsODBC.INI”
continut_fisier=citeste_fisier.ReadToEnd();
//nu mai avem nevoie de fisier asa ca il inchidem
citeste_fisier.Close();
.
.
.
//alte operatiuni
Observati ca ultima metoda apelata “citeste_fisier.Close();” trebuie apelata in cazul in care nu mai avem nevoie de fisier ca astfel programul sa
elibereze din resurse.
________________________________________________________________________________________________________________________________________________
Pentru operatiuni de citire,se foloseste acelasi namespace:
Cod:
System.IO
Clasa folosita pentru a “scrie” in fisiere este,in cazul acesta “StreamWriter”.
Initializarea unei instante “StreamWriter” se face identic ca la “StreamReader”.
Exemplu:Vom pastra in “scrie_fisier” o instanta a clasei “StreamWriter”.
StreamReader citeste_fisier=new StreamReader(
,bool adauga);
adauga - variabila de tip booleana(bool) care precizeaza modul de deschidere a fisierului(cu posibilitatea de adaugare-append- >>true si prin a scrie fara adaugare-stergere- >>false)
Exceptiile returnate la apelarea constructorului sunt :
UnauthorizedAccessException
Acces respins.ArgumentException
calea este “goala”.-sau-
calea contine numele unei resurse utilizate de comp(com1,com2 etc) ???. // ff rar
ArgumentNullException
calea este o referinta la null.DirectoryNotFoundException
Directorul care contine fisierul este de negasit.IOException
Locatia este incorect scrisa.PathTooLongException
Calea a depasit numarul maxim de caractere(248) sau lungimea fisierelui a depasit 260 de caractere(lungimea maxima in windows).SecurityException
Nu este acces la fisierul respectiv(securitate).
Dupa crearea instantei si apelarea constructorului,programatorul poate sa faca scrierea pe fisier folosind urmatoarele metode:
//scrie o variabila din urmatoarele in fisier:
Write (Boolean)
Write (Char)
Write (Char[])
Write (Decimal)
Write (Double)
Write (Int32)
Write (Int64)
Write (Object)
Write (Single)
Write (String)
Write (UInt32)
Write (UInt64)
///////////////////////////////////////////////
//scrie una dintre variabilele urmatoare si apoi muta cursorul pe urmatoarea linie
WriteLine (Boolean)
WriteLine (Char)
WriteLine (Char[])
WriteLine (Decimal)
WriteLine (Double)
WriteLine (Int32)
WriteLine (Int64)
WriteLine (Object)
WriteLine (Single)
WriteLine (String)
WriteLine (UInt32)
WriteLine (UInt64)
//OBS! pentru a muta curosrul fara a scrie nimic se apeleaza simplu WriteLine()
////////////////////////////////////////////////
Un exemplu de folosire:
//initializarea obiectului “scrie_fisier”,al doilea argument este tip bool si setat pe “false” deoarece dorim sa stearga tot si sa scrie el date noi
StreamWriter Scrie_fisier=new StreamWriter(”C:\Windows\0.log”,false);
//scrierea propriuzisa
scrie_fisier.Write(”Text adaugat automat de program!”);
//Eliberarea de resurse
scrie_fisier.Close();//acum ca tot stim sa citim … putem verifica daca programul a mers automat.Si anume:
//initializam o instanta a clasei “StreamReader”
StreamReader citeste_fisier=new StreamReader(”C:\Windows\0.log”);
//afisam automat continutul fisierului printr-un mesaj
MessageBox.Show(citeste_fisier.ReadToEnd());
//eliberam resurse
citeste_fisier.Close();
Usor,nu? Till next time…
©3Nigma
Categoria: Programare
