Jason. Cała informatyka w jednym miejscu!

Było o zapisie, to teraz będzie to samo programowane w drugą stronę. Klasa "StreamReader" w języku C# to także "ułatwiacz" w zakresie importowania danych przy asyście "FileStream". Więcej informacji jest zawartych już w środku.

KIEDY NARASTA POTRZEBA WYGODNEGO ODCZYTU DANYCH, POMYŚL O "STREAMREADER" W JĘZYKU C#!

Zakładając że przeczytaliście o klasie "StreamWriter", krótko podsumuję. Chodzi o takie samo ułatwienie operacji tylko w drugą stronę, czyli import / odczyt, czy jak wolicie to nazwać ;). Tutaj też występują przeciążenia metody odczytującej dla każdego typu danych, zatem znajdzie się miejsce dla "int'a", "float'a" i wielu innych. Więcej pisać nie trzeba, chyba...tak myślę :).

METODY KLASY "STREAMWRITER"

Przechodzimy jak zawsze do listy najistotniejszych metod jakie znalazłem w książce, dzięki której podnoszę swój poziom wiedzy z "CSharpa". "StreamWriter" w języku C# posiada między innymi:

NAZWA ZNACZENIE
Close Zamknięcie strumienia (bardzo ważnym jest, żeby ZAWSZE na końcu wywołać tę metodę; inaczej plik może się nie ukazać w katalogu i nie będzie możliwe wykonywanie na nim operacji!).
DiscardBufferedData Czyszczenie wewnętrznego bufora.
Dispose Zamknięcie strumienia i zwolnienie niezarządzanych zasobów (parametr "boolowski" pozwala także zwolnić te zarządzane).
Peek Zwrot następnego dostępnego znaku bez usuwania go (działanie można porównać do funkcji, która zwraca pierwszy element w tablicy, lecz nie pozbywa się go).
Read Odczyt następnego znaku i przejście do kolejnego.
ReadBlock Odczyt znaków ze strumienia i zapis danych do bufora.
ReadLine Odczyt wiersza znaków ze strumienia i zwrot wartości jako łańcucha znaków.
ReadToEnd Odczyt wszystkich znaków, aż do momentu dojścia do końca pliku.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Pamiętacie przykład z poprzedniego artykułu? Mając go na względzie, przeprowadzimy teraz manewr odczytu tamtych liczb typu "float" i wypisanie ich na strumień wyjściowy przy pomocy obiektu "StreamReader" w języku C#. Oto kod realizujący postawione zadanie:

string filename = "data.txt";
FileStream fs = new FileStream(filename, FileMode.Open);
StreamReader sr = new StreamReader(fs);
string data;

while ((data = sr.ReadLine()) != null)
{
	Console.WriteLine(data);
}

sr.Close();

Po utworzeniu sobie instancji "FileStream" (która jest wymagana także przy klasie "StreamWriter"), możemy skorzystać z konstruktora i utworzyć obiekt "StreamReader". W celu wypisania naszych liczb, stosujemy tę samą technikę z użyciem pętli "while" jaka została ukazana w artykule o "FileStream", tylko zmieniamy typ na "string", bo to jest próba odczytu znaków czy też łańcucha znaków, tak jak zawarto w tym przykładzie. A na końcu wstawiamy co? Zamykanie strumienia za pomocą metody "Close"! Starajcie się o tym nie zapominać. Ja sam zapominałem o tej instrukcji wielokrotnie :).

Zwracam uwagę, że przykład został mocno uproszczony i polega na wielokrotnym przypisywaniu łańcucha zmiennej, a tak nie powinno się robić! Wytłumaczyłem dlaczego w artykule na temat łańcucha znaków.

Jeszcze jedna rzecz. Wprowadzane dane były typu "float", a tutaj mamy łańcuchy. Co zrobić jeśli potrzebujemy włożyć dane jako liczby, a później odczytać je TAKŻE jako liczby np. żeby potem przypisać je do zmiennej? Skorzystać z klasy "Convert" :D! Zostawię Wam na deser jak przerobić to na "float".

Klasa "StreamReader" w języku C#

"StreamReader" w języku C# jest w stanie odczytać dane wszelakiej maści z pliku zewnętrznego!


Czy może być coś jeszcze wartego uwagi z działu obsługi plików? Tak :P! Ostatnim rozdziałem z tego cyklu będzie zaprezentowanie jak się obchodzić się z plikami binarnymi, i to w obie strony ;)!

PODOBNE ARTYKUŁY