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.