UNIX,Linux,Retele,Programare
Homespacer Tutorialespacer Forumspacer Utilizatorispacer Cautarespacer Webmailspacer Director web


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();

reprezinta locatia fisierului pe HDD pe care dorim sa il citim.
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);

reprezinta locatia fisierului pe HDD pe care dorim sa-l scriem.
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

 
© 2008 SkullBox, all rights reserved