Strumienie odczytu i zapisu do pliku

Transkrypt

Strumienie odczytu i zapisu do pliku
Strumienie odczytu i zapisu do pliku
Rys. 1 Wygląd aplikacji demonstrującej odczyt i zapis do pliku
Głównym zadaniem programu jest pokazanie jak w prosty sposób działa odczyt
i zapis do pliku w języku C#.
Głównym elementem programu jest DataGirdView, w którym będziemy
prezentowali nasze dane oraz umożliwmy użytkownikowi ich edycję.
Aby DataGirdView mógł „przyjmować” od nas dane, musimy utworzyć
kolumny.
W tym celu klikamy prawym klawiszem na utworzony DataGirdView i
wybieramy Add Column. Pojawi nam się takie okno:
W polu Type możemy wybrać jakiego typu ma to być kolumna. W omawianym
przykładzie zostały utworzone 4 kolumny TextBoxColumn oraz jedna
CheckBoxColumn, która będzie nas informowała czy dana książka została
wypożyczona.
Gdy mamy już DataGirdView przygotowany do otrzymywania danych, możemy
zająć się dodawaniem książek.
W tym celu poniżej tworzymy prosty formularz:
Klikamy 2 razy na przycisku Dodaj, aby napisać co ma program wykonać po
kliknięciu na niego.
Pierwsza linijka jest najistotniejsza. Tutaj odwołujemy się do naszego
DataGirdView (o nazwie DgvBiblio) i dodajemy do niego odpowiednie wartości
pobrane z wcześniej przygotowanych Textboxów. Na samym końcu dodajemy
wartość true. Jest to dostępność naszej książki. Domyślnie każda nowa książka,
która została dodana do bazy będzie dostępna do wypożyczenia (checkbox
zaznaczony). Na samym końcu czyścimy textboxy z wprowadzonych danych.
Dodawanie książek do DataGirdView już działa, ale niestety po wyłączeniu
programu utracimy wszystkie wprowadzone dane. Z pomocą przychodzi
strumień zapisu. Zanim jednak zaczniemy się nim zajmować, na początku
naszego kodu musimy dodać odpowiednią klasę, dlatego też po using
System.Windows.Forms; dopisujemy using System.IO;
Pod naszym DataGirdView tworzymy przycisk Zapisz i przechodzimy do
zaprogramowania akcji po jego kliknięciu.
W pierwszej linijce tworzymy nowy obiekt StreamWriter, który w parametrze
konstruktora przyjmuje nazwę pliku, pod którym zostanie zapisany nasz plik.
Następnie mamy 2 pętle. Pierwsza przechodzi po wszystkich wierszach naszego
DataGirdView, oprócz ostatniego ponieważ jest on wierszem pustym (stąd
DgvBiblio.RowCount-1).
Druga pętla przechodzi po każdej kolumnie danego wiersza, dodając stringa z
danego pola do naszego pliku. Na końcu każdej kolumny dodawany jest znak
„|”, który pozwoli nam przy odczycie odpowiednio podzielić dane z powrotem
na kolumny.
Na końcu zamykamy strumień metodą Close();
Dzięki temu zapisaliśmy nasze książki do pliku, teraz, aby móc je odczytać
tworzymy przycisk Wczytaj i piszemy dla niego odpowiednią akcję:
Na początku pomińmy blok try-catch. Podobnie jak w zapisie, tym razem
tworzymy obiekt StreamReader, który pozwoli nam odczytać plik o nazwie,
którą podaliśmy w jego konstruktorze.
Całą zawartość pliku przypisujemy do zmiennej content i robimy to za pomocą
metody sr.ReadToEnd();
Do zmiennej int a przypisujemy ilość linii jakie zawiera plik. Następnie mamy
jedną pętle, która przechodzi po każdej linijce, dodając odpowiednio stringi do
DataGirdView podzielone pionowymi kreskami „|”.
Po całej operacji zamykamy nasz StreamReader metodą Close();
Całą operacje umieliśmy w bloku try i catch na wypadek gdyby program nie
mógł znaleźć pliku. Wtedy na ekranie pojawi się stosowny komunikat
informujący o braku pliku.